fix(live): git-init the seeded flake so doctor stops false-warning
All checks were successful
Check / eval (push) Successful in 3m26s
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:
@@ -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
|
||||
|
||||
|
||||
@@ -19,19 +19,24 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-13 — session wrap: #94/#98/#99 parked with findings (this commit)
|
||||
- **Task:** Record in-progress state (token budget wrap-up).
|
||||
- **Did:** BACKLOG progress notes on #94 (installed chromium path V1-proven;
|
||||
live posture is the real gap), #98 (not palette-level; needs the actual
|
||||
widget identified), #99 (root cause + fix drafted; held on the open live
|
||||
offline theme-switch failure — focused serial-log VM run in flight to
|
||||
`/tmp/nomarchy-v2-theme-99/`).
|
||||
- **Verified:** V0 — notes only. Working tree deliberately carries two
|
||||
uncommitted drafts: hosts/live.nix git-seed (#99) and the flake.nix live
|
||||
posture comment (#94); next session verifies then commits or reverts.
|
||||
- **Pending:** #99 decision from the in-flight run; #94 test-install run
|
||||
(+ #97 V2 click); #96 V3 + #101 round 2 in HARDWARE-QUEUE.
|
||||
- **Next suggestion:** read the #99 run's serial.log first.
|
||||
## 2026-07-13 — #99 live-seed git-init; theme-switch failure filed as #113 (this commit)
|
||||
- **Task:** BACKLOG #99 — false "theme-state.json NOT git-tracked" doctor/
|
||||
Waybar warning in the live session; resolve the held question from Fable.
|
||||
- **Did:** hosts/live.nix `nomarchy-seed-flake` now `git init`+`add`+`commit`s
|
||||
the seeded `~/.nomarchy` (like nomarchy-install.sh:654), so the live
|
||||
checkout is a committed repo. Also committed #94's live-posture comment in
|
||||
flake.nix (separate commit).
|
||||
- **Verified:** V2 — focused serial-log VM run (`/tmp/nomarchy-v2-theme-99/`):
|
||||
doctor prints `✔ theme-state.json is git-tracked` + `✔ flake checkout is
|
||||
clean`, `GIT_REPO_OK`/`TRACKED_OK` markers. Held question RESOLVED: the
|
||||
same run's offline gruvbox switch failed with a 1176-drv source rebuild,
|
||||
but a local drv-equivalence test proved the failing
|
||||
`bvl30ggn…home-manager-generation.drv` is BYTE-IDENTICAL path-seeded vs
|
||||
git-seeded → the git-seed is exonerated; the failure is a pre-existing
|
||||
ISO-pinning gap (unpinned non-default-theme generation), now filed as #113.
|
||||
- **Pending:** #113 (offline theme-switch contract); #94 launch check; #97
|
||||
V2 click; #96 V3 + #101 round 2 (HARDWARE-QUEUE).
|
||||
- **Next suggestion:** #113 — decide pin-all-themes vs scope the offline promise.
|
||||
|
||||
## 2026-07-13 — #96+#97 menu gates explain instead of vanish/raw-fail (this commit)
|
||||
- **Task:** BACKLOG #96 (battery-limit row silently absent on threshold-less
|
||||
|
||||
@@ -1572,6 +1572,13 @@
|
||||
users.${username} = {
|
||||
imports = [ self.homeModules.nomarchy ];
|
||||
nomarchy.stateFile = ./theme-state.json;
|
||||
# Deliberate live-session posture (BACKLOG #94): the live
|
||||
# desktop ships the distro modules only — NO browser or
|
||||
# template app suite (mime defaults still name chromium,
|
||||
# which GIO skips while absent). The template's Chromium +
|
||||
# apps arrive with installation (the ISO pins that HM
|
||||
# closure for offline installs); #103 adds a baseline app
|
||||
# set to the live session itself.
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -148,6 +148,16 @@ in
|
||||
if [ ! -e "$home/.nomarchy" ]; then
|
||||
cp -r ${nomarchySrc} "$home/.nomarchy"
|
||||
chmod -R u+w "$home/.nomarchy"
|
||||
# Committed git repo, exactly like nomarchy-install produces —
|
||||
# otherwise nomarchy-doctor (and its Waybar badge) false-alarms
|
||||
# "theme-state.json is NOT git-tracked" in the live session.
|
||||
(
|
||||
cd "$home/.nomarchy"
|
||||
${pkgs.git}/bin/git init -q
|
||||
${pkgs.git}/bin/git add -A
|
||||
${pkgs.git}/bin/git -c user.name="Nomarchy Live" -c user.email="live@nomarchy" \
|
||||
commit -qm "Nomarchy live session"
|
||||
)
|
||||
chown -R ${username}:users "$home/.nomarchy"
|
||||
fi
|
||||
'';
|
||||
|
||||
Reference in New Issue
Block a user