feat(nix): distribute isolated Nova builder credentials #243
No reviewers
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!243
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/issue-233-nova-builder-credentials"
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?
Closes #233.
Scope:
Validation:
The user-created Lyra auto-update hold remains active and must be released after this MR merges.
Automated code review
Reviewed commit:
354130339f55b8d70bac8eea3f09f7157438bfddVerdict: Requires further work
Resolve the blocking or important findings and investigate failed deterministic checks before merging.
Overall assessment
The PR introduces isolated SOPS-managed SSH keys for Nix remote builders on Lyra and Electra, configures
.sops.yamlwith host-specific recipient groups, installs secrets with restrictive permissions, and removes an unnecessarynetcat-gnudependency. Validation confirms correct decryption, installation, and functional remote builds.Blocking findings
None.
Important findings
The diff adds rules referencing
*lyraand*electraanchors. The human reply states these are defined at the top of.sops.yaml, but this definition is not present in the supplied diff.Impact: If the anchors
*lyraand*electraare not correctly defined in the full file, SOPS operations will fail with 'unknown anchor' errors.Suggested fix: Verify that
*lyraand*electraare defined as YAML anchors mapping to the correct age public keys in the.sops.yamlfile outside the diff context.Suggestions
The documentation states: '#234 will consume it when Electra explicitly opts in...'
Impact: Users relying on this documentation might expect immediate functionality or be confused by the reference to a future issue.
Suggested fix: Ensure Issue #234 is linked or tracked appropriately, or update the documentation if the consumption mechanism changes.
Tests and validation
Questions
*lyraand*electraanchors exist in.sops.yaml. Can you confirm their exact values to ensure they match the recipients in the encrypted secrets?Review limitations
.sops.yamloutside the diff.Diff coverage
.sops.yaml: reviewed — included in a context-limited batchdocs/nova-remote-builder.md: reviewed — included in a context-limited batchhosts/electra/default.nix: reviewed — included in a context-limited batchhosts/lyra/default.nix: reviewed — included in a context-limited batchmodules/server/base.nix: reviewed — included in a context-limited batchsecrets/nix-remote-builders/electra.json: reviewed — included in a context-limited batchsecrets/nix-remote-builders/lyra.json: reviewed — included in a context-limited batchReview metadata
Review follow-up:\n\n- The claimed missing aliases are already defined at the top of .sops.yaml: electra and lyra map to their respective age public keys. The new rules reference those existing anchors.\n- The recipient mappings are verified live, not just inferred: just test successfully decrypted and installed both binary SOPS secrets on their intended hosts. Lyra and Electra each rendered its own root:root mode-0400 key.\n- Nova authorization and remote builds were live-validated for both keys.\n- The netcat-gnu removal is intentional: server/base imports common/system, which already supplies netcat-openbsd. Repository-wide search found no GNU-netcat-specific consumers; the follow-up just test on Lyra removed the prior nc collision warning.\n- Issue #234 exists and is the declared successor that will consume these credentials.\n\nNo code change is needed for these diff-context limitations. Please reassess using this reply and the validation evidence in #233/MR description.
Final review confirmation:
*electrais defined in the tracked.sops.yamlasage1qkndq2jf4ezw3gp2mrq76xhh8u5aczkrux23wxgw35y9pmejj99s90s46l.*lyrais defined in the same file asage1sxaj9le979k69925p7emxr34m6r78xd9ksnzeuytxm9szzymrgdqhm26kh.Those exact public recipients are the host-specific entries used by the corresponding creation rules. The successful
just testsecret decryption on each respective host independently verifies that mapping. Issue #234 is already open and is the tracked consumer for the opt-in builder configuration.