feat(chaos): migrate Newt, Rangarr, and Killarr #153
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!153
Loading…
Reference in a new issue
No description provided.
Delete branch "prepare-chaos-docker-stacks-migration"
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?
Summary
modules/containers/./srv/stacks/rangarr/config.yaml.vega.yamlandchaos.yamlfiles.Validation
nix flake check --no-write-lock-filepasses for all NixOS configurations.newt,docker,docker-rangarr, anddocker-killarrare active.Notes
Newt logged stale Wishlist target lookup errors before Wishlist was removed from Pangolin; the target is no longer part of this deployment.
Closes #152
Automated code review
Reviewed commit:
ef11d03b197f63af64086fb019bd4e76a35decefVerdict: Ready to merge
No blocking or important findings were retained, and deterministic checks passed. Suggestions remain advisory.
Overall assessment
Migrates Newt, Rangarr, and Killarr to independent OCI container modules on the chaos host. Splits Newt SOPS secrets into host-scoped files (vega.yaml, chaos.yaml) and updates .sops.yaml creation rules. Introduces a hardcoded hostname fallback for secret paths and unpinned
:latestimage tags.Blocking findings
None.
Important findings
None.
Suggestions
Hardcoded hostname fallback in shared module limits extensibility (modules/services/newt.nix:37; high confidence)
default = if config.networking.hostName == "vega" then ../../secrets/newt/vega.yaml else ../../secrets/newt/chaos.yaml;
Impact: Tightly couples a shared module to specific hostnames. Adding Newt to a third host requires modifying the shared module rather than relying on convention or options.
Suggested fix: Derive the SOPS path dynamically from config.networking.hostName (e.g., "../../secrets/newt/${config.networking.hostName}.yaml") and update .sops.yaml with a wildcard or explicit rule for new hosts.
Unpinned OCI container images reduce deployment determinism (modules/containers/rangarr.nix:29; high confidence)
image = "judochinx/rangarr:latest";
Impact: Using :latest tags means containers may pull different versions on rebuild, potentially introducing breaking changes or inconsistent behavior across deployments.
Suggested fix: Pin images to specific version tags or content-addressable digests for reproducible builds.
Unpinned OCI container images reduce deployment determinism (modules/containers/killarr.nix:28; high confidence)
image = "judochinx/killarr:latest";
Impact: Using :latest tags means containers may pull different versions on rebuild, potentially introducing breaking changes or inconsistent behavior across deployments.
Suggested fix: Pin images to specific version tags or content-addressable digests for reproducible builds.
Missing port configuration for Rangarr and Killarr containers (modules/containers/rangarr.nix:28; medium confidence)
virtualisation.oci-containers.containers.rangarr = { image = ...; volumes = ...; environment = ...; };
Impact: No ports are published. If external or LAN access is required, the services will be unreachable unless routed through an internal proxy like Newt/Pangolin.
Suggested fix: Verify network requirements and add explicit ports mappings if external access is needed, or document that they are strictly internal-only.
Tests and validation
Questions
Review limitations
Diff coverage
.sops.yaml: reviewed — included in a context-limited batchhosts/chaos/default.nix: reviewed — included in a context-limited batchmodules/containers/killarr.nix: reviewed — included in a context-limited batchmodules/containers/rangarr.nix: reviewed — included in a context-limited batchmodules/services/newt.nix: reviewed — included in a context-limited batchsecrets/README.md: reviewed — included in a context-limited batchsecrets/newt.yaml: reviewed — included in a context-limited batchsecrets/newt/chaos.yaml: reviewed — included in a context-limited batchsecrets/newt/vega.yaml: reviewed — included in a context-limited batchReview metadata