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/neovim/nvim b/user/modules/neovim/nvim index da6106c..f11e6a0 160000 --- a/user/modules/neovim/nvim +++ b/user/modules/neovim/nvim @@ -1 +1 @@ -Subproject commit da6106c77470b336783951ff2bce795688e9663d +Subproject commit f11e6a02db5cd8e4c8c1bdec0d34557ff995c32c diff --git a/user/modules/pi/agent b/user/modules/pi/agent new file mode 160000 index 0000000..4f129c8 --- /dev/null +++ b/user/modules/pi/agent @@ -0,0 +1 @@ +Subproject commit 4f129c83b945e8847df798f83a29e554570c6142 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