chore(nix): bump the nixpkgs flake input — go_1_26 1.26.4 → 1.26.5 (GO-2026-4970, GO-2026-5856), lock is 4 weeks stale [schedule: Daily agent update check] #257
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#257
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Move the
nixpkgsflake input forward. It has been locked since 2026-07-05 and the Go toolchain it ships (go_1_26) is one patch release behind, inside two stdlib security advisories. This is anix flake update nixpkgsplus the two documentation lines that record the pin — no code changes expected.docs/ops.md:86states the process this issue is executing:Evidence — what is behind
flake.lock, the single input:nixos-unstablewas at148bab9c1c3c53136ecb44a6ea356a0ed5b39b06(2026-08-01) when this was checked — take whatever the branch head is when you run it, the rev is not the point.What actually moves, verified by reading the two trees directly:
d407951447dc(locked)nixos-unstableheadgo_1_26nix/package.nix:21buildslab+labctlwithgolangci-lintnodejs(nodejs_24)Security — the reason this is worth doing now, stated honestly
Go 1.26.5 fixes two stdlib advisories that
go_1_26 = 1.26.4is inside. Both were checked againstvuln.go.dev:Every
labandlabctlbinary this flake builds — including the ones the deploy ships — currently carries a 1.26.4 stdlib.Neither advisory appears reachable from this repo's own code, and that should be said plainly rather than dressed up:
GO-2026-4970is inos.Root(theos.OpenRootsandboxed-directory API).grep -rn 'os\.Root\|OpenRoot' --include=*.go internal/ cmd/returns nothing — this repo does not use that API anywhere.GO-2026-5856requires the caller to invoke Encrypted Client Hello (an opt-intls.Config.EncryptedClientHelloConfigList).grep -rn 'crypto/tls\|EncryptedClientHello\|ECHConfig' --include=*.go internal/ cmd/returns nothing — nothing here importscrypto/tlsdirectly, and nothing configures ECH.So this is toolchain hygiene with an advisory attached, not an incident. It is still worth landing: the change is a one-line lock move, it keeps the toolchain on the current patch so the next stdlib advisory does not find us two releases behind, and
govulncheckoutput stops carrying stdlib findings that have to be re-triaged by hand on every sweep.What does NOT move — checked so you do not have to re-derive it
docs/ops.md:307and.forgejo/workflows/ci.yml:15-19pin the native gate's toolchain to "nixpkgs at the current flake.lock". Those pins are the usual reason a nixpkgs bump ripples into CI. Both are unchanged across this bump (table above), so:.forgejo/workflows/ci.yml:49-53—node-version: "24"stays..forgejo/workflows/ci.yml:80-89—golangci-lint v2.12.2stays (three places: the comment, the install-script URL, the-b … v2.12.2argument).docs/ops.md:307— the "Node 24 …, golangci-lint 2.12.2" sentence stays.If your
flake.lockupdate lands on a rev where either has moved, update all of the above in the same commit and say so in the PR — do not leave the comments claiming a version nixpkgs no longer ships.nix/package.nix'svendorHashis a function ofgo.mod/go.sum, not of nixpkgs, so it does not change here.importNpmLockderives per-package fetches fromweb/package-lock.jsondirectly (nix/package.nix:67-75) — there is nonpmDepsHashto refresh either.Scope
flake.locknixpkgsnode, vianix flake update nixpkgs— do not hand-editdocs/ops.md:86docs/ops.md:307,.forgejo/workflows/ci.ymlNothing under
internal/,cmd/, orweb/.flake.nixitself does not change: the input staysgithub:NixOS/nixpkgs/nixos-unstable.Where this can actually break — check before assuming it is a one-liner
nix flake checkis the whole gate and it is broader than the Go build. A nixpkgs bump moves everything the checks evaluate, not just the toolchain:nixos-container-closurebuilds a container-enabled dummy NixOS system's full toplevel (flake.nix,checks). podman, crun, passt, and systemd all move with nixpkgs, and ADR-0058/0059/0060 make lab's cgroup anduser@manager layout sensitive to systemd behaviour. A closure that stops building, or anixos-modulecheck whose grepped unit text has shifted, is the realistic failure mode.labderivation runs the fullgo test ./...as itscheckPhasewith real git/tmux/prlimit from nixpkgs innativeCheckInputs. A movedgitortmuxcan surface as a test failure that is not about the toolchain at all.If either breaks, report it here with the actual error rather than pinning around it or loosening a check. A nixpkgs bump that needs a code change is a finding, not a chore.
How to verify
Optional but useful evidence for the PR body, if a Go toolchain is available:
Done means
flake.lock'snixpkgsnode points at anixos-unstablerev whosego_1_26is 1.26.5 or newer — confirmed withnix eval --raw nixpkgs#go_1_26.version, and the value quoted in the PR body.flake.lockwas regenerated bynix flake update nixpkgs, not edited by hand; the diff touches only that node.docs/ops.md:86records the new rev (its own instruction).nix flake checkpasses — includingnixos-moduleandnixos-container-closure..forgejo/workflows/ci.yml's golangci-lint and Node pins either still match nixpkgs at the new rev (expected) or were updated in the same commit, withdocs/ops.md:307kept in step.internal/,cmd/, orweb/. If one was needed, it is explained on this issue.Closes #<this issue>and names the old and new revs plus thego_1_26version delta.Out of scope
go.mod/go.sum) — that is #250, which explicitly parks the flake input as "a separate, ops-facing decision". This issue is that decision; the two touch disjoint files (flake.lockhere,go.mod/go.sum/vendorHashthere) and can land in either order.go 1.26language pin ingo.mod. Go 1.27 is at rc2 and is not stable; the flake input must keep shippinggo_1_26(flake.nix:6-8,nix/package.nix:19-21). Do not touch either.services.lab.agentPackagesand the agent CLI versions in nixpkgs.pkgs.claude-code/pkgs.codexresolve against the deploying host's nixpkgs (Cloonar/nixos), not this flake's — this repo'snix flake checknulls both agent packages so no agent CLI ever enters its closures (flake.nix,containerDummy). Nothing about the agent-tools pins changes here; those live incontainers/agent-tools/versions.envand move on #249.nixos-25.11) instead ofnixos-unstable. That is a real question — unstable is why this needs periodic bumping at all — but it is a maintainer decision, not this chore.Filed by the Daily agent update check schedule, 2026-08-02. Toolchain versions read from
pkgs/development/compilers/go/1.26.nix,pkgs/by-name/go/golangci-lint/package.nix, andpkgs/top-level/all-packages.nixat both revs; advisory data fromvuln.go.dev/ID/GO-2026-4970.jsonandGO-2026-5856.json; reachability fromgrepoverinternal/andcmd/. No nix, Go, or Node toolchain was available in the investigating environment, so nothing here was built — every claim is source-level and re-checkable.