ci(forgejo): run Nix jobs host-mode on bismuth with a warm store #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "arcuru-bot/eidetica:ci/forgejo-host-mode"
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?
What
Converts the Forgejo Nix CI from per-job
nixos/nixcontainers to a host-mode runner on bismuth, so all 7 jobs share one warm/nix/storeinstead of re-substituting the full closure 7× per push.Changes:
.forgejo/workflows/nix.yml— dropcontainer:, targetruns-on: bismuth, remove the per-jobnix-env -iA nixpkgs.nodejsstep, and installnix-fast-buildfrom the flake (.#nix-fast-build) instead of the unpinned channel..forgejo/scripts/setup-nix.sh— re-enable the build sandbox, add bismuth's nix-serve (http://bismuth:5000) as the top-priority substituter with its public key.flake.nix— exposenix-fast-buildas a package output so CI can pin it.⚠️ Workflow files
This PR changes
.forgejo/workflows/nix.ymland.forgejo/scripts/setup-nix.sh. Merging is the moment they go live.Not yet verified — needs the host runner
This can't be run until bismuth has a host-mode runner. Before/after merging:
bismuthlabel — or change theruns-on:line to whatever label you register./nix/storeGC policy. Persistence is the point of host mode; without a GC policy a home machine fills its disk.Verification: a green run in host mode, then a second consecutive run showing fewer bytes downloaded / less wall time (store stayed warm).
Note on the substituter key
The bismuth nix-serve public key (
bismuth:4o7SV2VpSiWDMTgFsFyAjAGqBjzrreKbTjpooZVghCY=) was not supplied separately — it is already in carbon'snix.conf(carbon trusts bismuth's cache). Reused here rather than guessed.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.