- Add pi-coding-agent package (v0.55.4) with multi-platform support - Replace custom Go 1.25.6 override with nixpkgs-unstable buildGoModule for beads and perles builds - Update flake inputs: beads, nixpkgs-unstable, perles - Update vendor hashes for beads and perles - Add pi-coding-agent to development role
80 lines
2.5 KiB
Nix
80 lines
2.5 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchurl
|
|
, patchelf
|
|
, glibc
|
|
, makeWrapper
|
|
}:
|
|
|
|
let
|
|
version = "0.55.4";
|
|
|
|
srcs = {
|
|
aarch64-darwin = {
|
|
url = "https://github.com/badlogic/pi-mono/releases/download/v${version}/pi-darwin-arm64.tar.gz";
|
|
sha256 = "0vsav9frvnzskk6p6j60i7klrs3m8lphhyi4c39mv2mvhpm8fkl5";
|
|
};
|
|
x86_64-darwin = {
|
|
url = "https://github.com/badlogic/pi-mono/releases/download/v${version}/pi-darwin-x64.tar.gz";
|
|
sha256 = "1377rvhsiiww1bbpgv2v46fjm7iz2smmh8g2yhm28kbsq3gwvvr0";
|
|
};
|
|
x86_64-linux = {
|
|
url = "https://github.com/badlogic/pi-mono/releases/download/v${version}/pi-linux-x64.tar.gz";
|
|
sha256 = "1wnfwnkfq5ffz6wyqyhciv4lz06bpxims0hv0dlhz0f9vliyc1md";
|
|
};
|
|
aarch64-linux = {
|
|
url = "https://github.com/badlogic/pi-mono/releases/download/v${version}/pi-linux-arm64.tar.gz";
|
|
sha256 = "00fp37hgjl40kc59jfpv189i7np53ymm037hvds6k9y2sz818wjy";
|
|
};
|
|
};
|
|
|
|
src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
|
|
|
in stdenv.mkDerivation {
|
|
pname = "pi-coding-agent";
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
inherit (src) url sha256;
|
|
};
|
|
|
|
sourceRoot = "pi";
|
|
|
|
# Bun standalone binaries have JS code appended after the ELF sections
|
|
dontStrip = true;
|
|
dontPatchELF = true;
|
|
|
|
nativeBuildInputs = [ makeWrapper ]
|
|
++ lib.optionals stdenv.isLinux [ patchelf ];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
# Install the full pi directory structure (binary + supporting files)
|
|
mkdir -p $out/lib/pi-coding-agent
|
|
cp -r . $out/lib/pi-coding-agent/
|
|
|
|
# Create bin wrapper that runs the binary from its lib directory
|
|
# (pi expects supporting files like themes and wasm relative to itself)
|
|
mkdir -p $out/bin
|
|
makeWrapper $out/lib/pi-coding-agent/pi $out/bin/pi
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
# Manually patch the interpreter for bun standalone binaries on Linux
|
|
postFixup = lib.optionalString stdenv.isLinux ''
|
|
interpreter="${glibc}/lib/${if stdenv.hostPlatform.system == "aarch64-linux" then "ld-linux-aarch64.so.1" else "ld-linux-x86-64.so.2"}"
|
|
patchelf --set-interpreter "$interpreter" $out/lib/pi-coding-agent/pi
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Minimal terminal coding agent with extensible tools and session management";
|
|
homepage = "https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent";
|
|
license = licenses.mit;
|
|
maintainers = [ ];
|
|
platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" "aarch64-linux" ];
|
|
mainProgram = "pi";
|
|
};
|
|
}
|