diff --git a/flake.lock b/flake.lock index a2673aa..aa265c3 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1776613567, - "narHash": "sha256-gC9Cp5ibBmGD5awCA9z7xy6MW6iJufhazTYJOiGlCUI=", + "lastModified": 1773025010, + "narHash": "sha256-khlHllTsovXgT2GZ0WxT4+RvuMjNeR5OW0UYeEHPYQo=", "owner": "nix-community", "repo": "disko", - "rev": "32f4236bfc141ae930b5ba2fb604f561fed5219d", + "rev": "7b9f7f88ab3b339f8142dc246445abb3c370d3d3", "type": "github" }, "original": { @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1775425411, - "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", + "lastModified": 1772985280, + "narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=", "owner": "nix-community", "repo": "home-manager", - "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", + "rev": "8f736f007139d7f70752657dff6a401a585d6cbc", "type": "github" }, "original": { @@ -102,11 +102,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1777428379, - "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", + "lastModified": 1773375660, + "narHash": "sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "755f5aa91337890c432639c60b6064bb7fe67769", + "rev": "3e20095fe3c6cbb1ddcef89b26969a69a1570776", "type": "github" }, "original": { @@ -118,11 +118,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1777268161, - "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=", + "lastModified": 1776169885, + "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76", + "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9", "type": "github" }, "original": { @@ -134,11 +134,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1777268161, - "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=", + "lastModified": 1772963539, + "narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76", + "rev": "9dcb002ca1690658be4a04645215baea8b95f31d", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1777603930, - "narHash": "sha256-IkawcGZuNSlf7mkiGo6NgmZir248sd6mVvUj1kuPIMw=", + "lastModified": 1773108757, + "narHash": "sha256-3BAoe2R6YA6Xjdsgx3urZ4Ns3LeTy0E/w5d1wPny910=", "owner": "nix-community", "repo": "NUR", - "rev": "e7e4dc38580b7ef29d36d4afd3ba808e4f7ef5d5", + "rev": "9f2c583704f122828e6f9893416ca3b007464ee6", "type": "github" }, "original": { @@ -185,11 +185,11 @@ ] }, "locked": { - "lastModified": 1777338324, - "narHash": "sha256-bc+ZZCmOTNq86/svGnw0tVpH7vJaLYvGLLKFYP08Q8E=", + "lastModified": 1773550941, + "narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "8eaee5c45428b28b8c47a83e4c09dccec5f279b5", + "rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1", "type": "github" }, "original": { diff --git a/system/machines/desktop/default.nix b/system/machines/desktop/default.nix index 539aa63..16a68c0 100644 --- a/system/machines/desktop/default.nix +++ b/system/machines/desktop/default.nix @@ -11,6 +11,7 @@ ../../keys ../../modules/sops ../../modules/docker + ../../modules/nix-ld ./hardware.nix ./system.nix ]; diff --git a/system/machines/desktop/system.nix b/system/machines/desktop/system.nix index 080e157..e981ab8 100644 --- a/system/machines/desktop/system.nix +++ b/system/machines/desktop/system.nix @@ -66,13 +66,6 @@ in }; }; - programs.nix-ld = { - enable = true; - libraries = with pkgs; [ - icu - ]; - }; - boot.loader = { systemd-boot = { enable = true; diff --git a/system/machines/server/default.nix b/system/machines/server/default.nix index c7f50e0..57add69 100644 --- a/system/machines/server/default.nix +++ b/system/machines/server/default.nix @@ -10,6 +10,7 @@ ../../../user ../../keys ../../modules/sops + ../../modules/nix-ld ./hardware.nix ./system.nix ]; diff --git a/system/machines/wsl/default.nix b/system/machines/wsl/default.nix index 9fb4e88..2d2a831 100644 --- a/system/machines/wsl/default.nix +++ b/system/machines/wsl/default.nix @@ -10,6 +10,7 @@ ../../../user ../../keys ../../modules/sops + ../../modules/nix-ld ./system.nix ]; } diff --git a/system/modules/nix-ld/default.nix b/system/modules/nix-ld/default.nix new file mode 100644 index 0000000..efe4d81 --- /dev/null +++ b/system/modules/nix-ld/default.nix @@ -0,0 +1,39 @@ +{ pkgs, lib, config, ... }: + +with lib; +let + cfg = config.modules.system.nix-ld; + +in +{ + options.modules.system.nix-ld = { + enable = mkOption { + type = types.bool; + default = any + (user: user.modules.user.neovim.enable or false) + (attrValues config.home-manager.users); + description = "Enable nix-ld so Mason-installed Neovim tools can run on NixOS."; + }; + }; + + config = mkIf cfg.enable { + programs.nix-ld = { + enable = true; + libraries = with pkgs; [ + curl + expat + fontconfig + freetype + glib + icu + libgcc + libGL + libxkbcommon + openssl + stdenv.cc.cc + zlib + zstd + ]; + }; + }; +} diff --git a/user/modules/bash/default.nix b/user/modules/bash/default.nix index 631890b..a1420a7 100644 --- a/user/modules/bash/default.nix +++ b/user/modules/bash/default.nix @@ -13,7 +13,7 @@ in }; home.file.".config/bash" = { - source = config.lib.file.mkOutOfStoreSymlink ./bash; + source = ./bash; recursive = true; }; diff --git a/user/modules/git/default.nix b/user/modules/git/default.nix index aa2ff58..26baea5 100644 --- a/user/modules/git/default.nix +++ b/user/modules/git/default.nix @@ -8,6 +8,9 @@ in { options.modules.user.git = { enable = mkEnableOption "user.git"; }; config = mkIf cfg.enable { programs = { + git = { + enable = true; + }; gh = { enable = true; settings.git_protocol = "ssh"; @@ -16,11 +19,10 @@ in home = { packages = with pkgs; [ - git git-crypt ]; file.".config/git" = { - source = config.lib.file.mkOutOfStoreSymlink ./git; + source = ./git; recursive = true; }; }; diff --git a/user/modules/git/git b/user/modules/git/git index 7ea8c16..8b16b70 160000 --- a/user/modules/git/git +++ b/user/modules/git/git @@ -1 +1 @@ -Subproject commit 7ea8c164bc6ab3eaea2ff5743cfa2db62fd62397 +Subproject commit 8b16b7047c3fa70945cca5a058408b57b2ef2e7f diff --git a/user/modules/gui/alacritty/config/alacritty.nix b/user/modules/gui/alacritty/config/alacritty.nix index 4df8cff..b396d7c 100644 --- a/user/modules/gui/alacritty/config/alacritty.nix +++ b/user/modules/gui/alacritty/config/alacritty.nix @@ -25,29 +25,29 @@ in colors = { primary = { background = "#000000"; - foreground = "#dadada"; + foreground = "#cdd6f4"; }; normal = { - black = "#181818"; - red = "#ff6b6b"; - green = "#00b300"; - yellow = "#e8a060"; - blue = "#88ddcc"; - magenta = "#c490d0"; - cyan = "#b3f6c0"; - white = "#dadada"; + black = "#1e2127"; + red = "#e06c75"; + green = "#98c379"; + yellow = "#d19a66"; + blue = "#61afef"; + magenta = "#c678dd"; + cyan = "#56b6c2"; + white = "#abb2bf"; }; bright = { - black = "#5a5a5a"; - red = "#ff6b6b"; - green = "#00b300"; - yellow = "#ffcc00"; - blue = "#88ddcc"; - magenta = "#c490d0"; - cyan = "#b3f6c0"; - white = "#ffffff"; + black = "#5c6370"; + red = "#e06c75"; + green = "#98c379"; + yellow = "#d19a66"; + blue = "#61afef"; + magenta = "#c678dd"; + cyan = "#56b6c2"; + white = "#ffffff"; }; }; diff --git a/user/modules/gui/utils/default.nix b/user/modules/gui/utils/default.nix index 626a269..f162ad3 100644 --- a/user/modules/gui/utils/default.nix +++ b/user/modules/gui/utils/default.nix @@ -11,7 +11,6 @@ in home.packages = with pkgs; [ gimp libreoffice - signal-desktop ]; }; } diff --git a/user/modules/neovim/default.nix b/user/modules/neovim/default.nix index 2c81e51..9a90d08 100644 --- a/user/modules/neovim/default.nix +++ b/user/modules/neovim/default.nix @@ -12,26 +12,11 @@ in defaultEditor = true; vimAlias = true; vimdiffAlias = true; - extraWrapperArgs = [ - "--suffix" - "PATH" - ":" - "${config.home.homeDirectory}/.npm-global/bin" - ]; - extraPackages = with pkgs; [ - gcc - cargo - rustc - - fzf - fd - ripgrep - bat - ]; + extraPackages = import ./pkgs.nix { inherit pkgs; }; }; home.file.".config/nvim" = { - source = config.lib.file.mkOutOfStoreSymlink ./nvim; + source = ./nvim; recursive = true; }; }; diff --git a/user/modules/neovim/nvim b/user/modules/neovim/nvim index 376b9c5..79643b1 160000 --- a/user/modules/neovim/nvim +++ b/user/modules/neovim/nvim @@ -1 +1 @@ -Subproject commit 376b9c5c16b9d8b121b73516219082e57b397bc9 +Subproject commit 79643b1a17336b43f09090aa51ffc18763e11552 diff --git a/user/modules/neovim/pkgs.nix b/user/modules/neovim/pkgs.nix new file mode 100644 index 0000000..1bdeb8a --- /dev/null +++ b/user/modules/neovim/pkgs.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: + +with pkgs; [ + gcc + lazygit +] diff --git a/user/modules/pi/default.nix b/user/modules/pi/default.nix index aa3bf51..4bde7aa 100644 --- a/user/modules/pi/default.nix +++ b/user/modules/pi/default.nix @@ -4,8 +4,6 @@ with lib; let cfg = config.modules.user.pi; npmGlobal = "${config.home.homeDirectory}/.npm-global"; - piVersion = "0.70.5"; - in { options.modules.user.pi = { enable = mkEnableOption "user.pi"; }; config = mkIf cfg.enable { @@ -18,65 +16,13 @@ in home.sessionPath = [ "${npmGlobal}/bin" ]; + home.file.".pi/agent" = { + source = ./agent; + recursive = true; + }; + programs.bash.initExtra = '' export LLAMACPP_API_KEY=$(cat /run/secrets/LLAMA_API_KEY) ''; - - home.activation.installPiCodingAgent = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - PATH="${pkgs.nodejs_20}/bin:$PATH" - agentDir="${config.home.homeDirectory}/.pi/agent" - piPkgScope="${npmGlobal}/lib/node_modules/@mariozechner" - piPkgDir="${npmGlobal}/lib/node_modules/@mariozechner/pi-coding-agent" - piBin="${npmGlobal}/bin/pi" - run mkdir -p ${npmGlobal} - run mkdir -p "${npmGlobal}/bin" - run mkdir -p "$piPkgScope" - run mkdir -p "${config.home.homeDirectory}/.pi" - run mkdir -p "$agentDir" - if [ -e "$agentDir" ]; then - run chmod -R u+w "$agentDir" - run find "$agentDir" -mindepth 1 -maxdepth 1 -exec rm -rf {} + - fi - run cp -R ${./agent}/. "$agentDir"/ - run chmod -R u+w "$agentDir" - run rm -f "$piBin" - run rm -f "${npmGlobal}/bin"/.pi-* - run rm -rf "$piPkgDir" - run rm -rf "$piPkgScope"/.pi-coding-agent-* - if ! run ${pkgs.nodejs_20}/bin/npm install -g --prefix ${npmGlobal} @mariozechner/pi-coding-agent@${piVersion}; then - warnEcho "pi-coding-agent install failed (offline or registry error)" - fi - - if [ ! -f "$piPkgDir/package.json" ]; then - for candidate in "$piPkgScope"/.pi-coding-agent-*; do - if [ -f "$candidate/package.json" ]; then - run rm -rf "$piPkgDir" - run mv "$candidate" "$piPkgDir" - break - fi - done - fi - - if [ -f "$piPkgDir/dist/cli.js" ]; then - run ln -sfn ../lib/node_modules/@mariozechner/pi-coding-agent/dist/cli.js "$piBin" - run chmod +x "$piPkgDir/dist/cli.js" - else - warnEcho "pi-coding-agent install did not produce dist/cli.js" - fi - - for ext in "$agentDir"/extensions/*; do - if [ -f "$ext/package.json" ]; then - if [ -f "$ext/package-lock.json" ]; then - if ! run ${pkgs.nodejs_20}/bin/npm ci --prefix "$ext"; then - warnEcho "pi extension dependency install failed for $ext" - fi - else - if ! run ${pkgs.nodejs_20}/bin/npm install --prefix "$ext"; then - warnEcho "pi extension dependency install failed for $ext" - fi - fi - fi - done - ''; }; } diff --git a/user/modules/vim/default.nix b/user/modules/vim/default.nix index 05a1ce4..68aed8a 100644 --- a/user/modules/vim/default.nix +++ b/user/modules/vim/default.nix @@ -16,7 +16,7 @@ in vim ]; file.".vim" = { - source = config.lib.file.mkOutOfStoreSymlink ./vim; + source = ./vim; recursive = true; }; };