Files
millerson-overlay.nix/packages/codeaf/package.nix
T
alex e2f24b0876 chore(packages): bump pins to current upstream releases
- awg-tool 0.4.0 -> 0.5.0
- awgen 0.1 -> 0.2
- codeaf 0.7.1 -> 0.8.2
- ds4 -> ee7e840 (2026-10-21)
- freebuff 0.2.19 -> 0.2.34
- graphify 0.9.77 -> 0.9.95 (add pyyaml dependency)
- hipengine 0.6.1 -> 0.8.3
- kubernetes-mcp-server 0.0.67 -> 0.0.69 (build with go_1_27)
- kyojin 1.3 -> 1.7.1 (drop obsolete setup.py/pyproject patches, ship
  gr_mix_hip from the package, add ninja runtime dependency)
- marmel -> de3e99c (2026-10-23)
- omniroute 3.8.50 -> 3.8.52
- open-code-review 1.12.12 -> 1.13.3 (build with go_1_27)
- pilotdeck 2026.10.17 -> 2026.10.20
- radar 1.16.2 -> 1.18.0
- traycer 1.4.2 -> 1.5.1

Verified: nix build passes for every bumped package; kyojin.tests.jit
compiles all five JIT kernels.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-10-24 14:09:34 +03:00

95 lines
3.3 KiB
Nix

{
lib,
buildGoModule,
fetchFromGitHub,
makeWrapper,
furrow,
}:
# codeaf carries a furrow inside itself: internal/furrowbin embeds whatever is
# staged in internal/furrowbin/cache and, on first use, writes it out to
# ~/.codeaf/bin/furrow-<version>. Upstream stages the GitHub release asset there,
# whose bytes are someone else's glibc-dynamic build that no Nix phase ever
# touched, so the file that lands in the state root cannot start here. Staging a
# rebuilt furrow is not an option either: upstream's fetcher re-checks the sha256
# named in internal/furrowbin/pin.json and would refuse one. So this build stages
# nothing, and hands over ./furrow.nix through CODEAF_FURROW instead, which
# internal/furrow reads before it looks at the embedded copy at all. Nothing of
# furrow's ends up in the codeaf binary; without that variable codeaf looks for
# furrow on PATH, the way a plain `go build` does.
#
# A codeaf run without this wrapper is not the same program: it has no furrow
# unless one is on PATH.
buildGoModule rec {
pname = "codeaf";
version = "0.8.2";
src = fetchFromGitHub {
owner = "Agent-Field";
repo = "CodeAF";
rev = "v${version}";
hash = "sha256-Gz/o32b/HeDsOJtC4nKL79ArPdNtD3kIq3nzp+vLffE=";
};
vendorHash = "sha256-stp2h8l3MkewQXuOVbExQu1LjKoET/jvCSqtqIGMItY=";
env.CGO_ENABLED = 0;
nativeBuildInputs = [ makeWrapper ];
# The shipped binary carries the packed manual rather than the raw Markdown.
tags = [ "codeaf_packed_manual" ];
subPackages = [ "cmd/codeaf" ];
# Upstream's own suite is a CI matrix (make test / make check) with network
# and timing assumptions; it is not buildGoModule-shaped.
doCheck = false;
# `make build` runs a host-side step before compiling: packing the manual into
# what the codeaf_packed_manual tag embeds. It is built for the build machine
# even when codeaf targets another platform, hence the unset GOOS/GOARCH. The
# vendoring derivation runs preBuild too, before vendor/ exists, and this step
# needs the vendored dependencies, so it waits for it. Upstream's other step,
# staging the furrow release, is deliberately not run: see ./furrow.nix.
preBuild = ''
if [ -d vendor ]; then
env -u GOOS -u GOARCH go generate ./internal/manual
fi
'';
postInstall = ''
wrapProgram $out/bin/codeaf --set CODEAF_FURROW ${furrow}/bin/furrow
'';
ldflags = [
"-s"
"-w"
"-X github.com/Agent-Field/codeaf/internal/buildinfo.rev=${version}"
"-X github.com/Agent-Field/codeaf/internal/buildinfo.dirty=false"
];
passthru = {
inherit furrow;
category = "AI Coding Agents";
updateScript = [
"nix-update"
"--flake"
".#codeaf"
# furrow.nix is not a flake output, so nix-update never touches it: bump it
# by hand alongside the version codeaf pins in internal/furrowbin/pin.json.
];
};
meta = with lib; {
description = "Coding harness and software factory for open models: hand off work and watch every project from one terminal";
homepage = "https://github.com/Agent-Field/CodeAF";
changelog = "https://github.com/Agent-Field/CodeAF/blob/v${version}/CHANGELOG.md";
license = licenses.asl20;
# Runs the furrow built from source by ./furrow.nix, not the release asset
# upstream would have embedded.
mainProgram = "codeaf";
platforms = platforms.linux ++ platforms.darwin;
};
}