{ lib , buildNpmPackage , fetchFromGitHub , nodejs , nodejs_22 , makeWrapper , pkg-config , pixman , cairo , pango , libjpeg , giflib , librsvg , }: buildNpmPackage rec { pname = "pi-coding-agent"; version = "0.72.1"; src = fetchFromGitHub { owner = "badlogic"; repo = "pi-mono"; rev = "v${version}"; hash = "sha256-SqUxghc60P3HfmaFJGB/m23mvzw0cD7cDEUrNFOqo0Y="; }; npmDepsHash = "sha256-KUC1xQK6oJXtg962YeLOnO76uTdR10/VNa9iiCdT3VM="; nativeBuildInputs = [ pkg-config makeWrapper ]; buildInputs = [ pixman cairo pango libjpeg giflib librsvg ]; # Skip generate-models in ai package (models.generated.ts already in repo) preBuild = '' substituteInPlace packages/ai/package.json \ --replace-fail '"build": "npm run generate-models && tsgo -p tsconfig.build.json"' \ '"build": "tsgo -p tsconfig.build.json"' ''; # Build coding-agent dependencies in order buildPhase = '' runHook preBuild cd packages/tui && npm run build && cd ../.. cd packages/ai && npm run build && cd ../.. cd packages/agent && npm run build && cd ../.. cd packages/coding-agent && npm run build && cd ../.. runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p $out/lib/pi-coding-agent $out/bin # Copy node_modules and the packages directory cp -r node_modules $out/lib/pi-coding-agent/ cp -r packages $out/lib/pi-coding-agent/ cat > $out/bin/pi <