06 – Generalise Remote Deployment Across the NixOS Fleet #237
Labels
No labels
area:authentication
area:flake-utilities
area:performance
area:tbd
host:chaos
host:electra
host:fleet
host:lyra
host:nova
host:vega
investigation
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
priority:high
priority:medium
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:auto-update-remediation
project:declarative-purity-cleanup
project:external-review
project:fleet-boundary-cleanup
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:nixos-build-deployment-pipeline
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
project:wiki-rebuild
repo:numtide/flake-utils
repo:numtide/nix-auth
repo:numtide/nixos-passthru-cache
repo:numtide/nix-relay
service:auto-update
service:mem0
service:nix
service:sillytavern
service:slskd
service:synthseek
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config#237
Loading…
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?
Completed
The controller-to-target remote deployment workflow from #236 has been generalised into a fleet-capable mechanism.
Delivered
scripts/nixos-controller-test.sh→scripts/nixos-remote-deploy.sh.test(default),boot, andswitchactivation actions.just test-remotenow uses a positional target and optional action, e.g.just test-remote vega switch.README.mdanddocs/nova-remote-builder.mdwith the new interface, fleet eligibility, exclusions, and recovery procedures.Validated
just deploy local/ explicit local override recovers without changing declarative policy.Exclusions recorded
MR !248 merged.
Evidence update — target hosts exercised
The following hosts have now been proven with the controller-to-target workflow (captured working-tree snapshot → Nova remote build → signed closure copy → target activation):
This satisfies the validation requirement to use the same implementation for Vega, Lyra, and at least one additional suitable host.
Fleet eligibility and exclusions
Documented in
docs/nova-remote-builder.mdon the feature branch:igpu/dgpu) and measured/secure-boot policy, so it acts as the controller, not a deployment target.nixpkgs-stableinput.Target-side recovery procedures (Nova unavailable, controller SSH unavailable after switch) are also documented in the same file.
Evidence — Nova unavailable recovery (Electra local fallback)
Test setup:
just deploy remoteto force a Nova remote build.Result:
Failed to find a machine for remote build!/local builds are disabled (max-jobs = 0).Recovery:
just deploy local(raw equivalent:sudo nixos-rebuild test --flake .#electra --option builders '' --option max-jobs auto).This confirms the documented recovery procedure works without changing the host's declarative builder policy.
Evidence — target-side rollback after controller SSH loss
Tested on Electra (igpu specialisation):
Result:
igpuspecialisation.NIX_PATHor the legacynixos-configlookup.For non-flake or no-repo recovery, the direct path also works:
This confirms the documented target-side recovery procedure.