No description
  • Nix 50.3%
  • Python 30.2%
  • Just 9.9%
  • Shell 9.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nova Nix Builder 6147190741 chore: Auto-update flake inputs
Validated-base: 60c756bc0a
Validated-lock-sha256: efe3e42e0cafafa3a8e2417906f317bbb8bfcc879eb95b75e68cbb3b3c6bc220
Cached-paths-sha256: e71554605a82461c534925b82672d1b78544485d030ab3ef14bb9e0c4ee459e9
2026-09-24 17:45:53 +01:00
.agents/skills/update-wiki docs: align source entry points with rebuilt wiki 2026-09-14 07:32:41 +01:00
.engram Replace Graphiti with Engram autosync 2026-07-03 06:16:56 +01:00
.forgejo fix(ci): align Nova cache configuration 2026-09-19 22:00:10 +01:00
docs feat(nix): generalise controller remote deployment with boot/switch actions 2026-09-21 17:46:14 +01:00
home Restore Bruno and replace pi.nix launcher 2026-09-10 21:22:54 +01:00
hosts Chore: Add lena's remote builder configuration 2026-09-21 09:05:16 +01:00
justfiles feat(deploy): add rollback and switch-generation just recipes 2026-09-21 21:18:54 +01:00
lib fix(ci): classify pinned OpenCode nixpkgs input 2026-09-19 19:03:52 +01:00
modules fix: allow update to jellyfin 12.1 2026-09-20 18:53:13 +01:00
nebula feat(nebula): add cert for chaos (10.10.0.9) 2026-08-08 21:23:25 +01:00
packages feat(nix): offload workload-host builds to nova 2026-09-20 08:42:55 +01:00
potential feat(electra): Tier 2 idle power — Bluetooth on battery, Ollama on-demand 2026-08-19 21:50:29 +01:00
remediation Distinguish editable leaf files from remediation reference recipes 2026-09-09 16:40:07 +01:00
scripts fix(nix): safer remote shell invocation and argument parsing 2026-09-21 18:11:21 +01:00
secrets Chore: Add lena's remote builder configuration 2026-09-21 09:05:16 +01:00
tests feat(nix): offload workload-host builds to nova 2026-09-20 08:42:55 +01:00
users Refactor: Replace just test-remote with test-controller. Can now call just test-remote and use new remote building process, tested by removing excess SSH public keys 2026-09-20 23:19:47 +01:00
.gitignore Setting mem0 LLM to gemma4:e2b on lyra to process new memories 2026-07-02 16:27:29 +01:00
.sops.yaml Chore: Add lena's remote builder configuration 2026-09-21 09:05:16 +01:00
AGENTS.md remove engram cloud service and client integration 2026-09-19 21:01:14 +01:00
flake.lock chore: Auto-update flake inputs 2026-09-24 17:45:53 +01:00
flake.nix test: verify controller signing key ownership 2026-09-23 18:21:03 +01:00
Justfile Harden and tune opencode config for Paseo-only use 2026-08-05 09:21:27 +01:00
LICENSE chore: adopt EUPL and retire Nova benchmark 2026-09-06 15:58:58 +01:00
paseo.json remove engram cloud service and client integration 2026-09-19 21:01:14 +01:00
README.md feat(nix): generalise controller remote deployment with boot/switch actions 2026-09-21 17:46:14 +01:00
treefmt.nix feat: adopt treefmt formatting and checks 2026-07-28 08:59:11 +01:00

NixOS Configuration

Multi-host NixOS flake for Electra, Lena, Vega, Lyra, and Chaos. flake.nix and the imported modules are the executable source of truth. The repository wiki is the curated reference, operating manual, engineering handbook, ADR register, and small NixOS learning path. Active plans and acceptance evidence belong in Forgejo issues.

Licence

Copyright © 2026 Nimmo. Original material in this repository is licensed under the European Union Public Licence v. 1.2. Referenced, fetched, and built third-party software retains its own licences.

Quick start

Run just or just --list for the current recipe names and parameters. The most common commands are:

Task Command
Validate Nix configuration and flake checks just check
Build and compare the current host without activation just build-diff
Test the current host without adding a boot generation just test
Deploy the reviewed configuration on the current host just deploy
Inspect evaluated host metadata just fleet-status
Inspect recent system generations just generations
Inspect the latest automatic update just auto-update-last-run
Check backup service state and recent snapshots just backup-status, just backup-snapshots

Stage new .nix and encrypted secret files before flake evaluation: a Git-backed flake does not see untracked files. Review every diagnostic warning. For configuration changes, read AGENTS.md and the wiki's Testing and CI Contracts.

Electra has one flake target with battery base, igpu, and dgpu boot variants. The latter two describe physical NVIDIA expansion-bay presence, not a workload preference. just test and just deploy preserve the current specialisation unless a deliberate mode change is requested. Use the wiki's Safe Testing and Deployment procedure, including an auto-update hold before remote testing.

Both commands use the host's declared build policy by default. Append local or remote to override build placement for one operation; the mode follows an optional Electra specialisation, such as just test dgpu remote.

For an explicitly selected remote target without giving that target the source tree, use just test-remote vega. It captures the controller's working tree, including untracked files. Add test, boot, or switch as a second argument to choose the activation action; test is the default.

Do not use just backup-restore as a general whole-root restore. Its current privilege/overwrite behaviour is unsafe for live recovery and is tracked by issue #226. Follow Full-Host Recovery or Backup Verification and Partial Restore instead. Disko/provisioning, boot-trust recovery, and secret rotation also have dedicated safety-gated runbooks; do not infer their commands from old Git history.

Repository entry points

Path Role
flake.nix, flake.lock Pinned inputs, shared makeNixosSystem builder, registered hosts, checks, and packages
hosts/<host>/ Selected host composition, hardware, storage layout, and local policy
modules/common/, modules/server/, modules/desktop/ Shared baseline and class-specific foundations
modules/profiles/, modules/services/, modules/containers/, modules/databases/ Opt-in capabilities and workload integration
users/ System account declarations
home/users/nimmo/, home/common/ Primary-user Home Manager entry point and shared user modules
potential/ Unregistered host drafts and legacy reference, excluded from normal host builds
justfiles/, scripts/, tests/, .forgejo/workflows/ Operator commands, implementation helpers, regressions, and Forgejo CI
secrets/, .sops.yaml Encrypted scoped secret files and age recipient policy; never plaintext values
.agents/skills/update-wiki/ Agent checklist for per-page source verification and independent wiki publication

The complete import chain and ownership rules are in the wiki's Engineering Handbook. modules/common/default-config.nix defines portable nixosConfig defaults for the primary user, email, repository path, and SSH key path. Host entries override them only when the host actually differs. New root flake inputs must also be classified by real consumers in lib/auto-update-policy.nix.

Fleet at a glance

Host Form Main package set Role
electra Framework 16 laptop Unstable Mobile desktop, hardware-presence specialisations
lena Lenovo 2-in-1 laptop Unstable Mobile desktop
vega Physical Intel server Unstable Storage-backed services, cache, AI integrations
lyra Physical Intel/NVIDIA server Unstable GPU compute and media workloads
chaos Proxmox VM Stable 26.05 Container-oriented workloads

Nova has an unregistered draft under potential/nova/. Do not treat it as a NixOS flake target or assume NixOS commands work on that machine until installation is confirmed. The Host Inventory and Service Catalogue separate declared placement from dated deployment evidence and live health.

Where to go next

Implementation-adjacent details of the automatic-update remediation controller remain in docs/auto-update-remediation.md. The live source and tests override any prose description if they diverge.