flake: bump nixpkgs + sops-nix (2026-08-03) #11
Reference in New Issue
Block a user
No description provided.
Delete Branch "chore/server-flake-update-20260803"
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?
cc-ci server flake-input bump — nixpkgs 24.11 → 26.05 + sops-nix → master
Bumps the cc-ci server host's NixOS dependencies, deliberately (not drift).
Changes
50ab793(nixos-24.11, 2025-06-30, EOL)531670d(nixos-26.05, 2026-08-03)77c423a(held back to plainbuildGoModulefor 24.11 compat)f140661(master,buildGo125Module/ Go 1.25)This is a 3-release channel jump (24.11 → 25.05 → 25.11 → 26.05). The cc-ci server was pinned
to 24.11, which reached end-of-life on 2025-06-30 and no longer receives security updates. Moving
to 26.05 matches the orchestrator host's channel so both boxes share a nixpkgs and CVEs get patched.
Breaking changes reviewed (25.05 / 25.11 / 26.05 release notes)
initrd. No
boot.initrd/boot.kernelParamscustom options in the cc-ci host config → uses thenew default, no config edit needed. A cold-boot proof is recommended after the rebuild.
nixos-rebuild switch+optional cold-boot proof covers this).
nixos-rebuildremoved (26.05): the Python rewrite (nixos-rebuild-ng) is nowmandatory.
gitmust be present on the host (it is). Nosystem.rebuild.enableNgset in theconfig → no edit needed.
runs in a docker container) → not affected.
fileSystemsmkDefault(25.11): the cc-ci host'shardware.nixdefinesfileSystems."/"and
fileSystems."/boot/efi"explicitly withdevice→ not affected.nix/hosts/cc-ci-hetzner/*.nix). Thenixos-rebuild buildstep is the safety net — if a renamed/removed option is hit, the buildfails and names the offending option before any
switch.Deploy plan (orchestrator-executed, authorized by invocation)
/root/cc-ci-deploy/(plain path flake, excludes.git)./etc/cc-ci/secrets/secrets.yaml) into the staged tree.nixos-rebuild build --flake .#cc-cifirst (catch errors before switching).nixos-rebuild switch --flake .#cc-ci(the live deploy — cycles abra reconcile oneshots).systemctl reboot+ re-verify) — stronger guarantee for the Stage 1 change.Not merged
This PR is the reviewable record of the bump. The live rebuild is the deploy; the PR is NOT
merged by the orchestrator. The operator reviews/merges at their discretion.
Deployed + incident report (2026-08-03)
Outcome: live on the cc-ci server.
nixos-version= 26.05.20260803.531670d (Yarara), generation 24, cold-boot proven, 0 failed units, all core swarm services 1/1, report.ci.commoninternet.net serving HTTP 200.Incident during first deploy
The initial
nixos-rebuild switch(commit4772e31, flake bump only) took the host off the network (~19:30–20:12 UTC): the 26.05 generation booted but never installed a default route, so SSH/Tailscale/ping were all dead while Hetzner showed the server "running".Root cause: since NixOS 25.05, scripted networking installs the default route from the gateway interface's
network-addresses-<iface>.service, and finds that interface viadefaultGateway.interfaceor by the gateway address being inside one of the interface's subnets. This host (nixos-infect provisioning) haddefaultGateway = "172.31.1.1"(bare string, no interface) with eth0 at91.98.47.73/32— Hetzner's off-subnet point-to-point gateway matched neither rule, so no unit claimed the default route. On 24.11 the oldnetwork-setup.serviceinstalled it unconditionally, which is why this never bit before.Fix:
c541cb1—defaultGateway = { address = "172.31.1.1"; interface = "eth0"; }. With the interface explicit, the module installs both the gateway host route and the default route from eth0's own unit. Verified bynix evalof the generated unit script, then by a livenixos-rebuild testbeforeswitch.Recovery path used: Hetzner rescue mode → mounted disk →
grub-editenvdefault to the gen-22 (24.11) entry → boot → redeploy with fix →test→switch→ cold-boot proof. (Note for next time: NixOS grub puts generations in a submenu, so one-shot entries need1>Nsyntax, and any persistent grubenvdefaultoverride must be cleared after the next switch regenerates grub.cfg.)Merging directly per operator policy: PRs are opened for visibility/history; the skill invocation is the authorization.