Compare commits

...
20 Commits
Author SHA1 Message Date
leonhard 164575b7ba fix: give priorities to nix option in hm standalone vs as module 2026-07-31 16:09:13 +02:00
leonhard 49bc86cc04 fix: remove nixvim input nixpkgs follow 2026-07-31 15:49:58 +02:00
leonhard abd8d56fab fix: remove nvim dap temporarily bc it fails build 2026-07-31 15:49:36 +02:00
leonhard d58232269c chore: flake update 2026-07-31 15:44:39 +02:00
leonhard 404b3c5796 feat: make nix settings available in home-manager standalone config 2026-07-16 10:18:00 +02:00
leonhard 2c4512dff3 chore: flake update 2026-07-08 15:58:25 +02:00
leonhard d5cb84ed00 feat!: remove git oauth and just use ssh keys 2026-06-14 12:04:05 +02:00
leonhard 6e81791188 fix: configure gitea to use correct ssh port 2026-06-03 22:31:33 +02:00
leonhard b77fb6e925 feat: host gitea 2026-06-02 14:42:26 +02:00
leonhard 0f39cfdf32 feat: use one acme host for the whole domain 2026-06-02 12:54:17 +02:00
leonhard 17e85e83b9 fix(fish): configure tide such that it works on first install 2026-05-27 09:12:26 +02:00
leonhard 3f7d4343fc feat: use part labels instead of uuids in hardware config 2026-05-21 10:30:53 +02:00
leonhard 0521e895a2 feat!: remove exegol 2026-05-21 10:21:10 +02:00
leonhard 10b0a4d862 chore: update flake dependencies 2026-05-20 19:54:56 +02:00
leonhard f33a930424 feat(hyprland): execute launcher on only pressing mod key 2026-05-20 19:50:10 +02:00
leonhard 107d50ff2b chore: update flake dependencies 2026-04-29 00:27:16 +02:00
leonhard 3800b27864 feat(neovim): add py formatter and fix deprecated nixfmt package name 2026-04-24 17:35:47 +02:00
leonhard 57e1853e2a feat(neovim): add dap 2026-04-12 17:15:10 +02:00
leonhard 241f4b0c02 fix(neovim): clean up treesitter options 2026-03-12 10:32:57 +01:00
leonhard 1d0f41ac79 fix: move xdg variable config to home-manager 2026-03-04 13:05:20 +01:00
18 changed files with 226 additions and 99 deletions
Generated
+36 -21
View File
@@ -8,11 +8,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1769996383, "lastModified": 1782949081,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -28,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771471179, "lastModified": 1785496534,
"narHash": "sha256-XuP8HPzvt4+m9aKVeL9GdGNlTeyeDn3zEeUuorvrw88=", "narHash": "sha256-EASdusMYLuPhOCrE3LmsAGOvGhX3vnKBLxFvj9lI8tU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2dedeb55b2c140d9a123ae931588e8903fe202ef", "rev": "e8827fbbb12015a8dd9f66285aec79d655bcb9f6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -43,11 +43,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1771369470, "lastModified": 1785454630,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "narHash": "sha256-LQy14TZp77TwbQf40gg1V3jo8FwJG0jGDkAH+zRHqg8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0182a361324364ae3f436a63005877674cf45efb", "rev": "1559d3daa3ecc813a650b79375ea61b6741b8746",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -57,20 +57,34 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1784555310,
"narHash": "sha256-/FCliTPgiuV1owejZFNx3Ch9irdvkOfOFl+HHZ+DrtM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "421eebfd0ec7bccd4abe826ce62d7e6e83129493",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": { "nixvim": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": [ "nixpkgs": "nixpkgs_2",
"nixpkgs"
],
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1771135771, "lastModified": 1785364321,
"narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=", "narHash": "sha256-BLuHl+nZKb+FDq3GAM6L+UBEiyVepXANA31fT1F56pw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba", "rev": "acd69cc15d57004e8cb4495034320263a3d362ea",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -94,11 +108,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771166946, "lastModified": 1783174389,
"narHash": "sha256-UFc4lfGBr+wJmwgDGJDn1cVD6DTr0/8TdronNUiyXlU=", "narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "2d0cf89b4404529778bc82de7e42b5754e0fe4fa", "rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -109,15 +123,16 @@
}, },
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1774449309,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "c29398b59d2048c4ab79345812849c9bd15e9150",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"ref": "future-26.11",
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
+1 -4
View File
@@ -11,10 +11,7 @@
url = "github:mic92/sops-nix"; url = "github:mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixvim = { nixvim.url = "github:nix-community/nixvim";
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
+27
View File
@@ -1,7 +1,9 @@
{ {
config, config,
osConfig ? null, osConfig ? null,
inputs,
lib, lib,
pkgs,
... ...
}: }:
let let
@@ -20,6 +22,31 @@ in
kekleo = lib.mkIf (osConfig != null) (mkDefaultSharedAttrs config.kekleo (osConfig.kekleo or { })); kekleo = lib.mkIf (osConfig != null) (mkDefaultSharedAttrs config.kekleo (osConfig.kekleo or { }));
nix =
let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in
lib.mkDefault {
package = pkgs.nix;
settings = {
experimental-features = osConfig.nix.settings.experimental-features or "nix-command flakes";
# Opinionated: disable global registry
flake-registry = "";
};
# Opinionated: make flake registry and nix path match flake inputs
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
home.sessionVariables = {
XDG_CACHE_HOME = "$HOME/.cache";
XDG_CONFIG_HOME = "$HOME/.config";
XDG_DATA_HOME = "$HOME/.local/share";
XDG_STATE_HOME = "$HOME/.local/state";
};
programs.home-manager.enable = true; programs.home-manager.enable = true;
# Nicely reload system units when changing configs # Nicely reload system units when changing configs
+6 -1
View File
@@ -22,6 +22,11 @@
}; };
home.activation.configure-tide = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.configure-tide = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
${pkgs.fish}/bin/fish -c "tide configure --auto --style=Lean --prompt_colors='16 colors' --show_time=No --lean_prompt_height='Two lines' --prompt_connection=Disconnected --prompt_spacing=Compact --icons='Few icons' --transient=Yes" if [ ! -e "$HOME/.config/fish/tide_configured" ]; then
echo "Configuring Tide..."
$DRY_RUN_CMD ${pkgs.fish}/bin/fish -c "tide configure --auto --style=Lean --prompt_colors='16 colors' --show_time=No --lean_prompt_height='Two lines' --prompt_connection=Disconnected --prompt_spacing=Compact --icons='Few icons' --transient=Yes"
$DRY_RUN_CMD touch "$HOME/.config/fish/tide_configured"
echo "Finish Configuring Tide..."
fi
''; '';
} }
-7
View File
@@ -1,12 +1,9 @@
{ {
config,
lib,
pkgs, pkgs,
... ...
}: }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
git-credential-oauth
git-crypt git-crypt
]; ];
@@ -15,10 +12,6 @@
settings = { settings = {
user.name = "Leonhard Kost"; user.name = "Leonhard Kost";
user.email = "leonhard.kost@gmail.com"; user.email = "leonhard.kost@gmail.com";
credential.helper = [
"cache --timeout 21600"
("oauth" + lib.optionalString (!config.kekleo.graphical) " -device")
];
}; };
}; };
} }
+3 -1
View File
@@ -46,6 +46,9 @@
]; ];
"$mod" = "SUPER"; "$mod" = "SUPER";
"$launcher" = "rofi -show drun"; "$launcher" = "rofi -show drun";
bindr = [
"$mod,Super_L,exec,pkill rofi || $launcher"
];
bind = [ bind = [
"ALTSHIFT,Q,killactive," "ALTSHIFT,Q,killactive,"
"ALT,V,togglefloating," "ALT,V,togglefloating,"
@@ -53,7 +56,6 @@
"ALTSHIFT,F,fullscreen,0" "ALTSHIFT,F,fullscreen,0"
"$mod,Return,exec,kitty" "$mod,Return,exec,kitty"
"$mod,F,exec,firefox" "$mod,F,exec,firefox"
"$mod,R,exec,$launcher"
"ALT,H,movefocus,l" "ALT,H,movefocus,l"
"ALT,L,movefocus,r" "ALT,L,movefocus,r"
+53
View File
@@ -0,0 +1,53 @@
{
programs.nixvim = {
plugins.dap = {
enable = true;
luaConfig.content = ''
local dap = require 'dap'
local dapui = require 'dapui'
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
dap.listeners.before.event_exited['dapui_config'] = dapui.close
'';
};
plugins.dap-ui.enable = true;
plugins.dap-python.enable = true;
keymaps = [
{
mode = "n";
key = "<F5>";
action = "<cmd>DapContinue<CR>";
options.desc = "Debug: Start/Continue";
options.silent = true;
}
{
mode = "n";
key = "<F1>";
action = "<cmd>DapStepInto<CR>";
options.desc = "Debug: Step Into";
options.silent = true;
}
{
mode = "n";
key = "<F2>";
action = "<cmd>DapStepOver<CR>";
options.desc = "Debug: Step Over";
options.silent = true;
}
{
mode = "n";
key = "<F3>";
action = "<cmd>DapStepOut<CR>";
options.desc = "Debug: Step Out";
options.silent = true;
}
{
mode = "n";
key = "<leader>b";
action = "<cmd>DapToggleBreakpoint<CR>";
options.desc = "Debug: Toggle Breakpoint";
options.silent = true;
}
];
};
}
@@ -2,6 +2,7 @@
{ {
imports = [ imports = [
./cmp.nix ./cmp.nix
#./dap.nix
./lsp.nix ./lsp.nix
./fmt.nix ./fmt.nix
./treesitter.nix ./treesitter.nix
+3 -1
View File
@@ -40,13 +40,15 @@
formatters_by_ft = { formatters_by_ft = {
lua = [ "stylua" ]; lua = [ "stylua" ];
nix = [ "nixfmt" ]; nix = [ "nixfmt" ];
python = [ "black" ];
}; };
}; };
}; };
extraPackages = with pkgs; [ extraPackages = with pkgs; [
stylua stylua
nixfmt-rfc-style nixfmt
black
]; ];
}; };
} }
@@ -3,11 +3,8 @@
programs.nixvim = { programs.nixvim = {
plugins.treesitter = { plugins.treesitter = {
enable = true; enable = true;
settings = { highlight.enable = true;
auto_install = true; indent.enable = true;
highlight.enable = true;
indent.enable = true;
};
}; };
extraPackages = with pkgs; [ extraPackages = with pkgs; [
+1 -8
View File
@@ -16,7 +16,7 @@
let let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs; flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in in
{ lib.mkForce {
settings = { settings = {
experimental-features = "nix-command flakes"; experimental-features = "nix-command flakes";
# Opinionated: disable global registry # Opinionated: disable global registry
@@ -30,13 +30,6 @@
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs; nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
}; };
environment.sessionVariables = {
XDG_CACHE_HOME = "$HOME/.cache";
XDG_CONFIG_HOME = "$HOME/.config";
XDG_DATA_HOME = "$HOME/.local/share";
XDG_STATE_HOME = "$HOME/.local/state";
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
wget wget
-3
View File
@@ -1,7 +1,6 @@
{ {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
./exegol.nix
]; ];
# Enable CUPS to print documents. # Enable CUPS to print documents.
@@ -22,8 +21,6 @@
# pulse.enable = true; # pulse.enable = true;
# }; # };
kekleo.exegol = true;
users.users = { users.users = {
leonhard = { leonhard = {
initialPassword = "leonhard"; initialPassword = "leonhard";
-19
View File
@@ -1,19 +0,0 @@
{
config,
lib,
pkgs,
...
}:
{
options.kekleo.exegol = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether to enable exegol.";
};
config = lib.mkIf config.kekleo.exegol {
virtualisation.docker.enable = true;
users.extraGroups.docker.members = [ "leonhard" ];
environment.systemPackages = with pkgs; [ exegol4 ];
};
}
+5 -3
View File
@@ -15,12 +15,12 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/0eb29109-abd1-49af-859a-1c5009e2482f"; device = "/dev/disk/by-label/nixos";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/EE00-3849"; device = "/dev/disk/by-label/boot";
fsType = "vfat"; fsType = "vfat";
options = [ options = [
"fmask=0077" "fmask=0077"
@@ -28,7 +28,9 @@
]; ];
}; };
swapDevices = [ ]; swapDevices = [
{ device = "/dev/disk/by-label/swap"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's
+20 -1
View File
@@ -7,6 +7,7 @@
./hardware-configuration.nix ./hardware-configuration.nix
./secrets ./secrets
./dyndns ./dyndns
./gitea.nix
./vaultwarden.nix ./vaultwarden.nix
]; ];
@@ -47,7 +48,25 @@
PasswordAuthentication = false; PasswordAuthentication = false;
KbdInteractiveAuthentication = false; KbdInteractiveAuthentication = false;
PermitRootLogin = "no"; PermitRootLogin = "no";
AllowUsers = [ "leonhard" ]; };
};
security.acme = {
acceptTerms = true;
defaults.email = "admin@${config.kekleo.domain}";
defaults.webroot = "/var/lib/acme/acme-challenge/";
certs.${config.kekleo.domain} = {
group = config.services.nginx.group;
};
};
services.nginx = {
enable = true;
virtualHosts.${config.kekleo.domain} = {
forceSSL = true;
useACMEHost = config.kekleo.domain;
locations."/.well-known/".root = config.security.acme.defaults.webroot;
}; };
}; };
} }
+34
View File
@@ -0,0 +1,34 @@
{
config,
...
}:
let
domain = config.kekleo.domain;
gitDomain = "git.${domain}";
in
{
services.gitea = {
enable = true;
settings.server.ROOT_URL = "https://${gitDomain}";
settings.server.SSH_PORT = builtins.elemAt config.services.openssh.ports 0;
settings.service.DISABLE_REGISTRATION = true;
settings.log.LEVEL = "Critical";
};
security.acme.certs.${domain}.extraDomainNames = [
gitDomain
];
services.nginx = {
enable = true;
virtualHosts.${gitDomain} = {
forceSSL = true;
useACMEHost = config.kekleo.domain;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.gitea.settings.server.HTTP_PORT}";
proxyWebsockets = true;
};
};
};
}
+30 -20
View File
@@ -1,32 +1,42 @@
# Do not modify this file! It was generated by nixos-generate-config {
# and may be overwritten by future invocations. Please make changes config,
# to /etc/nixos/configuration.nix instead. lib,
{ config, lib, pkgs, modulesPath, ... }: modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" ]; boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ]; boot.kernelModules = [ ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/e9aebe22-0d9f-460f-a576-f1c44f6050b0"; device = "/dev/disk/by-label/nixos";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/4705-B811"; device = "/dev/disk/by-label/boot";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [
}; "fmask=0077"
"dmask=0077"
swapDevices =
[ { device = "/dev/disk/by-uuid/a81582c7-be0f-4070-b3e8-64e24b8483d2"; }
]; ];
};
swapDevices = [
{ device = "/dev/disk/by-label/swap"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+4 -5
View File
@@ -20,17 +20,16 @@ in
}; };
}; };
security.acme = { security.acme.certs.${domain}.extraDomainNames = [
acceptTerms = true; vaultDomain
defaults.email = "admin@${domain}"; ];
};
services.nginx = { services.nginx = {
enable = true; enable = true;
virtualHosts.${vaultDomain} = { virtualHosts.${vaultDomain} = {
forceSSL = true; forceSSL = true;
enableACME = true; useACMEHost = config.kekleo.domain;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.vaultwarden.config.ROCKET_PORT}"; proxyPass = "http://127.0.0.1:${toString config.services.vaultwarden.config.ROCKET_PORT}";
proxyWebsockets = true; proxyWebsockets = true;