fix(live): git-init the seeded flake so doctor stops false-warning
All checks were successful
Check / eval (push) Successful in 3m26s

BACKLOG #99: the live-session seed (nomarchy-seed-flake) did a bare
`cp -r` with no `git init`, so `~/.nomarchy` was not a repo in the live
session and nomarchy-doctor's `git ls-files --error-unmatch
theme-state.json` false-alarmed "theme-state.json is NOT git-tracked"
(installed systems commit at nomarchy-install.sh:654 and were always
fine). The seed now init+add+commits, exactly like the installer.

Verified: V2 — focused serial-log VM run
(/tmp/nomarchy-v2-theme-99/): doctor prints "theme-state.json is
git-tracked" and "flake checkout is clean"; GIT_REPO_OK / TRACKED_OK
markers. A drv-equivalence test proves the seed change is
build-neutral: homeConfigurations.<user>.activationPackage is
byte-identical path-seeded vs git-seeded
(bvl30ggn...-home-manager-generation.drv). nix flake check green.

The same run exposed a separate, pre-existing failure — offline theme
switching in the live session rebuilds from source and dies offline —
filed as BACKLOG #113 (NOT caused by this change: same drv either way).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 20:14:04 +01:00
parent b645573149
commit 9550d2be5e
4 changed files with 59 additions and 36 deletions

View File

@@ -37,10 +37,10 @@ generation the ISO pins for offline installs contains the chromium binary,
`chromium-browser.desktop`, and all three HTTP/HTML handlers
(mime.nix sets them; template ships the package). The Acer sighting is the
LIVE session, which ships NO browser by design (mime defaults name chromium,
GIO skips it while absent) — #103 adds live baseline apps. Remains: a
test-install VM run proving chromium launches post-install (chain #97's
Bluetooth-click V2 into the same run), + make the live posture explicit in
the flake comment (edit drafted, uncommitted).
GIO skips it while absent) — #103 adds live baseline apps. Live posture is
now explicit in the flake comment. Remains: a test-install VM run proving
chromium launches post-install (chain #97's Bluetooth-click V2 into the
same run).
Chromium is the resolved default-browser decision and is present in the
downstream template, but this hardware pass found no usable default browser.
@@ -71,26 +71,27 @@ buttons in the installer (VM gum screens under Boreal look legible —
artifacts in `/tmp/nomarchy-v2-swap-93/`). Needs Bernardo's screenshot or
an Acer repro to pin the actual widget before fixing.
### 99. Doctor/Waybar reports `theme.json` is not git-tracked
### 113. Live session: offline theme switch rebuilds the world from source
**Progress 2026-07-13:** root-caused — the message is doctor's
"`theme-state.json` is NOT git-tracked": the live seed (hosts/live.nix
`nomarchy-seed-flake`) does `cp -r` with no `git init`, so `~/.nomarchy`
isn't a repo in the LIVE session (installed systems commit at
nomarchy-install.sh:654 and are fine). Fix drafted in the working tree
(seed does init+add+commit like the installer). Held for one open
question: the same evidence run saw the live offline
`nomarchy-theme-sync apply gruvbox` rebuild fail ("Build failed due to
failed dependency") — determine whether that predates the git-seed (the
git+file eval flips untracked-file visibility) before committing; a
focused VM run capturing the full rebuild log over serial is in flight
(`/tmp/nomarchy-v2-theme-99/`).
The live-installed checkout shows a doctor/Waybar warning that `theme.json`
is not tracked. Determine whether the warning targets the generated alias or
the canonical `theme-state.json`, then align the check with the in-flake state
contract. Pass = a fresh install has no false warning while a genuinely
untracked canonical state file is still detected.
Surfaced by #99's evidence run (2026-07-13, `/tmp/nomarchy-v2-theme-99/`):
in the **live ISO** session, offline `nomarchy-theme-sync apply gruvbox`
fails — its `home-manager switch` tries to build **1176 derivations** from
the `stage0`/`hex0` bootstrap up, then dies on offline source fetches
(`vala`, `yasm`, `config.jsonc`, `ghostty-config`, `easyeffects.svg`,
`typogrify`…), ending `error: Build failed due to failed dependency`. This
contradicts docs/TESTING.md item 6 ("apply gruvbox → switch runs offline").
The failing generation is `bvl30ggn…-home-manager-generation.drv`; it is
**not** the drv the ISO pins (the pin is the *default*-theme
`homeConfigurations.${username}.activationPackage`, i.e. Boreal — confirmed
drv-identical to the failing one only for gruvbox state, so a non-default
theme's generation is unpinned). NOT caused by #99's git-seed: the drv is
byte-identical path-seeded vs git-seeded. **Decide the contract:** either
pin every baked theme's live activationPackage into the ISO (size cost) or
scope the offline-switch promise to the shipped theme + correct
TESTING.md/MEMORY. Pass = a fresh live ISO either switches to any baked
theme offline, or fails with a clear "needs network for this theme" message
and accurate docs. **Not caused by anything in today's batch** — separate
pre-existing ISO-pinning gap.
## NEXT