diff --git a/.gitmodules b/.gitmodules index f740ede..a7bc1c6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,3 +14,6 @@ path = user/modules/bash/bash url = https://github.com/itme-brain/bash.git branch = master +[submodule "user/modules/pi/agent"] + path = user/modules/pi/agent + url = git@github.com:itme-brain/pi.git 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/modules/home-manager/home.nix b/system/machines/desktop/modules/home-manager/home.nix index 41e88bc..9eea824 100644 --- a/system/machines/desktop/modules/home-manager/home.nix +++ b/system/machines/desktop/modules/home-manager/home.nix @@ -81,6 +81,8 @@ writing.enable = true; }; + pi.enable = true; + gui = { wm.hyprland.enable = true; browser.firefox.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/bash b/user/modules/bash/bash index 6667f36..f0fe41e 160000 --- a/user/modules/bash/bash +++ b/user/modules/bash/bash @@ -1 +1 @@ -Subproject commit 6667f36a9f83a88b33b691a5a9b701365267bbb3 +Subproject commit f0fe41e942dfedab23828131372a5545a6d5c4c6 diff --git a/user/modules/neovim/nvim b/user/modules/neovim/nvim index da6106c..79643b1 160000 --- a/user/modules/neovim/nvim +++ b/user/modules/neovim/nvim @@ -1 +1 @@ -Subproject commit da6106c77470b336783951ff2bce795688e9663d +Subproject commit 79643b1a17336b43f09090aa51ffc18763e11552 diff --git a/user/modules/neovim/pkgs.nix b/user/modules/neovim/pkgs.nix index 04dcd86..1bdeb8a 100644 --- a/user/modules/neovim/pkgs.nix +++ b/user/modules/neovim/pkgs.nix @@ -1,24 +1,6 @@ { pkgs, ... }: -let - # Essential LSPs for config files (project-specific LSPs go in devShells) - lsp = with pkgs; [ - nixd - lua-language-server - marksman - taplo - ]; - - lsp' = with pkgs.nodePackages; [ - vscode-langservers-extracted # jsonls, html, cssls - bash-language-server - yaml-language-server - ]; - - extraPackages = with pkgs; [ - lazygit - gcc - ]; - -in - extraPackages ++ lsp ++ lsp' +with pkgs; [ + gcc + lazygit +] diff --git a/user/modules/pi/agent b/user/modules/pi/agent new file mode 160000 index 0000000..b0524fd --- /dev/null +++ b/user/modules/pi/agent @@ -0,0 +1 @@ +Subproject commit b0524fdd3056c7dd951b41f7da410dde37f91a67 diff --git a/user/modules/pi/default.nix b/user/modules/pi/default.nix new file mode 100644 index 0000000..4bde7aa --- /dev/null +++ b/user/modules/pi/default.nix @@ -0,0 +1,28 @@ +{ pkgs, lib, config, ... }: + +with lib; +let + cfg = config.modules.user.pi; + npmGlobal = "${config.home.homeDirectory}/.npm-global"; +in +{ options.modules.user.pi = { enable = mkEnableOption "user.pi"; }; + config = mkIf cfg.enable { + home.packages = with pkgs; [ nodejs_20 ]; + + home.sessionVariables = { + LLAMACPP_BASE_URL = "https://ai.ramos.codes/v1"; + NPM_CONFIG_PREFIX = npmGlobal; + }; + + 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) + ''; + }; +} diff --git a/user/modules/utils/dev/default.nix b/user/modules/utils/dev/default.nix index 991524b..c106cc2 100644 --- a/user/modules/utils/dev/default.nix +++ b/user/modules/utils/dev/default.nix @@ -9,7 +9,6 @@ in home.packages = with pkgs; [ unstable.claude-code unstable.codex - unstable.opencode bubblewrap diff --git a/user/modules/vim/vim b/user/modules/vim/vim index 8c8a4e4..d5bdb39 160000 --- a/user/modules/vim/vim +++ b/user/modules/vim/vim @@ -1 +1 @@ -Subproject commit 8c8a4e4a7afd175be2eb97055bb01f43ee8b992d +Subproject commit d5bdb39d7e65e679b3052e5ec437f75e4ec8e594