diff --git a/configs/packages.nix b/configs/packages.nix index 51ee95e..49418df 100644 --- a/configs/packages.nix +++ b/configs/packages.nix @@ -129,6 +129,7 @@ in polyglot qrpaste ttspaste + pi # llm agent new-mac # get a new mac address scanned default-gateway diff --git a/flake.nix b/flake.nix index 0ead149..d8ac97a 100644 --- a/flake.nix +++ b/flake.nix @@ -293,6 +293,7 @@ menstruation-backend = menstruation-backend.packages.${prev.stdenv.hostPlatform.system}.menstruation-backend; telebots = telebots.packages.${prev.stdenv.hostPlatform.system}.telebots; + pi-llm = llm-agents.packages.${prev.stdenv.hostPlatform.system}.pi; hesychius = scripts.packages.${prev.stdenv.hostPlatform.system}.hesychius; autorenkalender = autorenkalender.packages.${prev.stdenv.hostPlatform.system}.default; onomap = scripts.packages.${prev.stdenv.hostPlatform.system}.onomap; @@ -306,6 +307,7 @@ radio-news = prev.callPackage packages/radio-news { }; untilport = prev.callPackage packages/untilport.nix { }; weechat-declarative = prev.callPackage packages/weechat-declarative.nix { }; + pi = prev.callPackage packages/pi.nix { }; # my packages betacode = prev.callPackage packages/betacode.nix { }; @@ -622,6 +624,7 @@ obsidian-vim opustags pdf-ocr + pi picoclaw pls polyglot diff --git a/packages/pi.nix b/packages/pi.nix index 528ea4a..b4cd67a 100644 --- a/packages/pi.nix +++ b/packages/pi.nix @@ -18,7 +18,7 @@ let ]; outputHashMode = "recursive"; outputHashAlgo = "sha256"; - outputHash = "sha256-QZSVCJ0XirRz56v6ogxaB37c0bI8+OGEjrnqCFr/YI8="; + outputHash = "sha256-hfYl0Slxg3nuN6KTtvpWW0QUxtg3JRE0n9N7rIXBTOc="; impureEnvVars = [ "http_proxy" "https_proxy" @@ -41,30 +41,29 @@ let ''; in writeShellApplication { + name = "pi"; runtimeInputs = [ nodejs ]; - wrapper = - { exePath, ... }: - '' - set -efu - export npm_config_prefix="${pluginPrefix}" + text = '' + set -efu + export npm_config_prefix="${pluginPrefix}" - # Ensure settings.json has our plugins listed - SETTINGS_DIR="''${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}" - SETTINGS_FILE="$SETTINGS_DIR/settings.json" - mkdir -p "$SETTINGS_DIR" + # Ensure settings.json has our plugins listed + SETTINGS_DIR="''${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}" + SETTINGS_FILE="$SETTINGS_DIR/settings.json" + mkdir -p "$SETTINGS_DIR" - # Add packages to settings if not already present - if [ ! -f "$SETTINGS_FILE" ]; then - echo '{"packages":["npm:pi-hooks","npm:shitty-extensions"]}' > "$SETTINGS_FILE" - else - for pkg in "npm:pi-hooks" "npm:shitty-extensions"; do - if ! grep -q "$pkg" "$SETTINGS_FILE"; then - ${lib.getExe jq} --arg p "$pkg" '.packages = ((.packages // []) + [$p] | unique)' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" - mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE" - fi - done - fi + # Add packages to settings if not already present + if [ ! -f "$SETTINGS_FILE" ]; then + echo '{"packages":["npm:pi-hooks","npm:shitty-extensions"]}' > "$SETTINGS_FILE" + else + for pkg in "npm:pi-hooks" "npm:shitty-extensions"; do + if ! grep -q "$pkg" "$SETTINGS_FILE"; then + ${lib.getExe jq} --arg p "$pkg" '.packages = ((.packages // []) + [$p] | unique)' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" + mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE" + fi + done + fi - exec ${lib.getExe pi-llm} "$@" - ''; + exec ${lib.getExe pi-llm} "$@" + ''; }