docs(migration): guide for migrating an existing NixOS machine to Nomarchy
Some checks failed
Check / eval (push) Has been cancelled

Bernardo asked whether TuringMachine (NixOS 25.11) could adopt Nomarchy
without a reinstall, keeping all files. It can — it's a config switch that
reuses the existing hardware-configuration.nix, not a reformat. Adds
docs/MIGRATION.md: a generic "existing NixOS → Nomarchy" walkthrough with
TuringMachine as the worked example — candidacy checklist, the two
data-safety rules (never bump system.stateVersion; /home untouched), a
reversible Phase 0→4 (btrfs snapshot → build-only gate → nixos-rebuild
test → reconcile → cutover) and a triple rollback net. Bakes his decisions:
Nomarchy PPD (drop all ryzenadj), no Secure Boot (drop lanzaboote), full
cutover. Flake/system/home examples verified against lib.nix mkFlake +
templates/downstream, not guessed.

Also files a PROPOSED note: home.stateVersion should be mkDefault so
migrating users don't need mkForce.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-07-08 20:48:33 +01:00
parent be8d8a7d9b
commit 565f66372a
3 changed files with 337 additions and 0 deletions

View File

@@ -275,6 +275,16 @@ actually float once seen (regex tolerance for the `.…-wrapped` form).
*Agents: append here with a one-paragraph pitch (what/why/cost). Do not
implement. Bernardo moves accepted items into a tier.*
- **`home.stateVersion` should be `mkDefault`** (surfaced writing
docs/MIGRATION.md, 2026-07-08). `modules/home/default.nix:51` sets
`home.stateVersion = "26.05"` as a *plain* assignment, so a downstream
home.nix that needs a different value (anyone migrating an existing NixOS
install — their original install's stateVersion) can only override it with
`lib.mkForce`, which reads as a hack. Cheap fix: make it
`lib.mkDefault "26.05"` so a plain downstream assignment wins cleanly,
matching the mkDefault discipline the rest of the distro follows. (The
system side is already fine — the downstream owns system.nix outright.)
- **Battery charge-limit — make the toggle instant** `[blocked:hw]`
(follow-up to the preset toggle shipped 2026-07-07, iteration #55).
The control-center now has a proper toggle (Off / 80% / 90% / 60% /