diff options
| author | Arpit Chakladar <arpit@chakladar.me> | 2026-09-29 23:45:25 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpit@chakladar.me> | 2026-09-29 23:45:25 +0530 |
| commit | 33519df0fff478526d217d04190577b33c5bf7d0 (patch) | |
| tree | 18f6ee9bb8101381212038d16099e59d250b7080 /modules/development/pi-coding-agent/default.nix | |
| parent | 7975de6d03289bcc143137d5458486def5adc672 (diff) | |
| parent | 871a29efd370088f669c4f2b9e20b8992406a444 (diff) | |
| download | home-manager-config-33519df0fff478526d217d04190577b33c5bf7d0.tar.gz home-manager-config-33519df0fff478526d217d04190577b33c5bf7d0.zip | |
Merge branch 'adding-pi-harness'
Diffstat (limited to 'modules/development/pi-coding-agent/default.nix')
| -rw-r--r-- | modules/development/pi-coding-agent/default.nix | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/modules/development/pi-coding-agent/default.nix b/modules/development/pi-coding-agent/default.nix new file mode 100644 index 0000000..e560a98 --- /dev/null +++ b/modules/development/pi-coding-agent/default.nix @@ -0,0 +1,118 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.development.pi-coding-agent; + configDir = "${config.xdg.configHome}/pi"; +in +{ + options.development.pi-coding-agent = { + enable = lib.mkEnableOption "Pi Coding Agent"; + + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = config.programs.pi-coding-agent.package; + description = "The Pi Coding Agent package to use."; + }; + }; + + config = lib.mkIf cfg.enable { + home.file = { + "${configDir}/skills".source = ./skills; + "${configDir}/prompts".source = ./prompts; + "${configDir}/config/pi-subagent".source = ./roles; + }; + + programs.pi-coding-agent = { + enable = true; + inherit configDir; + package = pkgs.symlinkJoin { + name = "pi-coding-agent-wrapped"; + paths = [ pkgs.pi-coding-agent ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/pi \ + --set PI_CODING_AGENT_DIR ${configDir} + ''; + }; + keybindings = { + "tui.editor.cursorUp" = [ + "up" + "ctrl+p" + ]; + + "tui.editor.cursorDown" = [ + "down" + "ctrl+n" + ]; + + "tui.editor.deleteWordBackward" = [ + "ctrl+w" + "alt+backspace" + ]; + + "tui.editor.historyPrevious" = "ctrl+up"; + }; + + settings = { + defaultTools = [ + "read" + "bash" + "edit" + "write" + "grep" + "find" + "ls" + ]; + + defaultProjectTrust = "ask"; + + compaction = { + enabled = true; + reserveTokens = 16384; + keepRecentTokens = 20000; + }; + + retry = { + enabled = true; + maxRetries = 30; + baseDelayMs = 2000; + maxAgentDelayMs = 60000; + }; + + theme = "dark"; + + packages = [ + "npm:@termdraw/pi" + "npm:pi-mcp-adapter" + "npm:@henryqw/pi-subagent" + ]; + + skills = [ + "${configDir}/skills" + ]; + + prompts = [ + "${configDir}/prompts" + ]; + + themes = [ + "${configDir}/themes" + ]; + + enableSkillCommands = true; + + context = ./CONTEXT.md; + }; + + extraPackages = [ + pkgs.nodejs + pkgs.bun + ]; + }; + }; +} |
