{ lib , buildNpmPackage , fetchFromGitHub , nodejs , nodejs_22 , makeWrapper , pkg-config , pixman , cairo , pango , libjpeg , giflib , librsvg , }: buildNpmPackage rec { pname = "pi-coding-agent"; version = "0.74.0"; src = fetchFromGitHub { owner = "earendil-works"; repo = "pi-mono"; rev = "v${version}"; hash = "sha256-wEiqOezD8w08vyuenh3Kk+YCYBbQoEq67wATDEKy5XM="; }; npmDepsHash = "sha256-ZcJ6k3gOpO6vOgukn2L0AcQsj5M+behltEx12u2Zu7Y="; nativeBuildInputs = [ pkg-config makeWrapper ]; # Restore NPM Metadata - v0.74.0 lockfile omits resolved/integrity entries needed by buildNpmPackage. prePatch = '' cp ${./package-lock.json} package-lock.json ''; 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 <