feat(nebula): cut over service endpoints to mesh #203
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!203
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/issue-23-nebula-service-cutover"
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?
Related to #23.
Summary
mass-storage.mesh.vega.mesh.The Desktop Ollama LAN endpoint and Vega lighthouse LAN bootstrap entry remain intentionally unchanged: the Desktop does not join Nebula, and the bootstrap mapping is LAN-only by design.
Validation
nix fmtnebula@mesh.service.mass-storage.meshis reachable and TCP ports 2049 (NFS) and 8008 (Backrest) are open.Remaining evidence
A deployment and no-op follow-up on an affected host are still required before closing #23.
Automated code review
Reviewed commit:
3ebae8c4d38a8de4105c4ef6f7f552500c83de1aVerdict: Ready to merge
No blocking or important findings were retained, and deterministic checks passed. Suggestions remain advisory.
Overall assessment
The pull request migrates Synology NFS and Backrest endpoints from LAN IPs to Nebula mesh addresses across multiple service modules. It introduces a standardized
nebulaEnabledpredicate in mount modules to conditionally enforce systemd dependencies on the Nebula service, ensuring mounts wait for the mesh network. An assertion is added to the Engram Cloud client profile to prevent silent failures when using the mesh default without Nebula enabled. The changes are scoped correctly and validated against multiple hosts.Blocking findings
None.
Important findings
None.
Suggestions
The diff shows
serverUrldefault changed tohttp://vega.mesh:18080. The assertion inai-agents.nixallows an explicit non-mesh URL. The human reply mentions adding a comment explaining this escape hatch.Impact: Future maintainers might not immediately understand why the default is mesh-only or how to override it for non-Nebula hosts (like Electra, which uses an overlay).
Suggested fix: Add a descriptive comment in
modules/services/engram-cloud.nixnext to theserverUrloption explaining that the default requires Nebula and that an explicit URL is required for non-mesh deployments.Tests and validation
Questions
atticdmodule's NFS mount (/srv/attic/storage) require the same Nebula dependency logic as the other mounts? The diff shows it does, but is Attic accessed by hosts that might not be on Nebula (e.g., via LAN fallback)?Review limitations
nix flake checkorjust testto verify the evaluation and deployment success claims.mass-storage.meshorvega.meshfrom the specified hosts.Diff coverage
hosts/lyra/default.nix: reviewed — included in a context-limited batchhosts/vega/default.nix: reviewed — included in a context-limited batchmodules/containers/slskd.nix: reviewed — included in a context-limited batchmodules/profiles/ai-agents.nix: reviewed — included in a context-limited batchmodules/services/appdata.nix: reviewed — included in a context-limited batchmodules/services/atticd.nix: reviewed — included in a context-limited batchmodules/services/backrest.nix: reviewed — included in a context-limited batchmodules/services/engram-cloud.nix: reviewed — included in a context-limited batchmodules/services/media-library.nix: reviewed — included in a context-limited batchmodules/services/redview.nix: reviewed — included in a context-limited batchmodules/services/sabnzbd.nix: reviewed — included in a context-limited batchmodules/services/tdarr.nix: reviewed — included in a context-limited batchReview metadata
Thanks for the review.
The mount dependency is intentional: a
mass-storage.meshNFS source has no usable route without Nebula, soRequires=prevents a failed early mount and unavailable dependent services. All current consumers evaluate withnixosConfig.nebula.enable = true(Vega, Lyra, and Chaos), and Lena also enables Nebula for its Engram client default.I am taking the valid consistency suggestion: I will standardize the Nebula-enabled predicate across the mount modules, with no change to the intentional dependency semantics.
Follow-up completed in
902c2e1(refactor(nebula): standardize mount dependency checks). The four mount modules now use the same localnebulaEnabledpredicate; Vega, Lyra, Chaos, and Lena re-evaluate successfully, and the deterministic CI test passed.The subsequent AI-review workflow reported failure but posted no new review comment. Its job details cannot be fetched with the available Forgejo CLI because the server returns an incompatible jobs-response schema, so there is no additional actionable feedback to implement.
The rerun’s remaining finding is valid as a future-safety concern. Current autosync consumers are covered: Lena enables Nebula and uses the new default; Electra enables Nebula and explicitly uses Vega’s overlay URL.
I will add an assertion so any future host using the
vega.meshdefault must enable Nebula, while retaining an explicit non-mesh URL override for exceptional deployments.Implemented in
a7d3b36(fix(engram): require mesh for default autosync URL). Autosync may usehttp://vega.mesh:18080only with Nebula enabled; an explicit non-meshserverUrlremains supported for exceptional deployments. Vega, Electra, and Lena configurations evaluate successfully.Follow-up assessment:
docker-slskd.servicealready hasrequires = [ "srv-media.mount" ]andafter = [ "srv-media.mount" ]inmodules/containers/slskd.nix, so its container cannot start before the NFS mount is active. No change is needed there.