This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

tools.pi: add wrapped pi with permissions and plan-mode plugins

+63
+63
tools/pi/flake-module.nix
··· 1 + { self, ... }: 2 + { 3 + perSystem = 4 + { pkgs, system, ... }: 5 + let 6 + piPkg = self.legacyPackages.${system}.llm.pi; 7 + 8 + # Pre-install pi plugins into a fake npm global prefix 9 + pluginPrefix = 10 + pkgs.runCommand "pi-plugins" 11 + { 12 + nativeBuildInputs = [ 13 + pkgs.nodejs 14 + pkgs.cacert 15 + ]; 16 + outputHashMode = "recursive"; 17 + outputHashAlgo = "sha256"; 18 + outputHash = "sha256-QZSVCJ0XirRz56v6ogxaB37c0bI8+OGEjrnqCFr/YI8="; 19 + impureEnvVars = [ 20 + "http_proxy" 21 + "https_proxy" 22 + ]; 23 + SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; 24 + } 25 + '' 26 + export HOME=$TMPDIR 27 + export npm_config_prefix=$out 28 + npm install -g pi-hooks shitty-extensions 29 + ''; 30 + in 31 + { 32 + packages.pi = self.wrapLib.makeWrapper { 33 + pkgs = pkgs; 34 + package = piPkg; 35 + runtimeInputs = [ pkgs.nodejs ]; 36 + wrapper = 37 + { exePath, ... }: 38 + '' 39 + set -efu 40 + export npm_config_prefix="${pluginPrefix}" 41 + 42 + # Ensure settings.json has our plugins listed 43 + SETTINGS_DIR="''${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}" 44 + SETTINGS_FILE="$SETTINGS_DIR/settings.json" 45 + mkdir -p "$SETTINGS_DIR" 46 + 47 + # Add packages to settings if not already present 48 + if [ ! -f "$SETTINGS_FILE" ]; then 49 + echo '{"packages":["npm:pi-hooks","npm:shitty-extensions"]}' > "$SETTINGS_FILE" 50 + else 51 + for pkg in "npm:pi-hooks" "npm:shitty-extensions"; do 52 + if ! grep -q "$pkg" "$SETTINGS_FILE"; then 53 + ${pkgs.jq}/bin/jq --arg p "$pkg" '.packages = ((.packages // []) + [$p] | unique)' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" 54 + mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE" 55 + fi 56 + done 57 + fi 58 + 59 + exec ${exePath} "$@" 60 + ''; 61 + }; 62 + }; 63 + }