add pi coding agent module

Manages `~/.pi/agent` config via the itme-brain/pi submodule and
provides nodejs_20 with NPM_CONFIG_PREFIX=~/.npm-global so pi and its
extensions install via the global npm ecosystem.

Pi itself and extensions like pi-mcp-adapter are installed manually
via `npm install -g` rather than packaged through nix — the ecosystem
moves too fast to keep derivations current.
This commit is contained in:
Bryan Ramos 2026-04-27 16:55:26 -04:00
parent 46833d374e
commit 1ca2e5a512
4 changed files with 34 additions and 0 deletions

3
.gitmodules vendored
View file

@ -14,3 +14,6 @@
path = user/modules/bash/bash path = user/modules/bash/bash
url = https://github.com/itme-brain/bash.git url = https://github.com/itme-brain/bash.git
branch = master branch = master
[submodule "user/modules/pi/agent"]
path = user/modules/pi/agent
url = git@github.com:itme-brain/pi.git

View file

@ -81,6 +81,8 @@
writing.enable = true; writing.enable = true;
}; };
pi.enable = true;
gui = { gui = {
wm.hyprland.enable = true; wm.hyprland.enable = true;
browser.firefox.enable = true; browser.firefox.enable = true;

1
user/modules/pi/agent Submodule

@ -0,0 +1 @@
Subproject commit 71b78ea0c3b64e9fb253a408ad607b4f2d44f86b

View file

@ -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)
'';
};
}