feat(doctor): first-boot pre-activate fail flag (#83)
Some checks failed
Check / eval (push) Has been cancelled

If the installer left /var/log/nomarchy-hm-preactivate.log and no Home
Manager generation exists, doctor reports ✖ with the recovery one-liner
(home-manager switch --flake ~/.nomarchy -b bak). Clears once a
generation is present. checks.doctor covers both arms.

Verified: V2 — checks.doctor green; local smoke.
This commit is contained in:
Bernardo Magri
2026-07-11 10:28:14 +01:00
parent 639f553cb7
commit fe0b972171
7 changed files with 68 additions and 9 deletions

View File

@@ -461,6 +461,27 @@
"NOMARCHY_POWER_SUPPLY_ROOT=/tmp/fake-ps nomarchy-doctor 2>&1"
)
assert "MOUSE0" not in bat2, f"doctor reported Device-scope battery:\n{bat2}"
# #83 first-boot pre-activate fail flag: log present, no HM gen .
machine.succeed(
"mkdir -p /var/log && "
"echo 'error: activation failed' > /var/log/nomarchy-hm-preactivate.log"
)
# Bare test VM has no per-user HM profile for root.
pre = machine.fail("nomarchy-doctor 2>&1")
assert "pre-activat" in pre.lower() or "Home Manager generation" in pre, (
f"doctor missing pre-activate fail line:\n{pre}"
)
assert "home-manager switch" in pre, f"doctor missing recovery one-liner:\n{pre}"
# Once a generation exists, the flag clears (recovered).
machine.succeed(
"mkdir -p /nix/var/nix/profiles/per-user/root && "
"ln -sfn /run/current-system "
"/nix/var/nix/profiles/per-user/root/home-manager"
)
pre_ok = machine.succeed("nomarchy-doctor 2>&1")
assert "desktop generation is present" in pre_ok, (
f"doctor should ok when HM gen exists:\n{pre_ok}"
)
'';
};