feat(branding): GRUB (UEFI) theme + distroId=nomarchy
Completes the remaining "Distro branding, round 2" work. GRUB theme: hosts/live.nix builds nomarchyGrubTheme whose background is the same composed splash as the isolinux/BIOS splash (accent logo on base), with a palette-coloured boot menu and accent timeout bar. Derived from nixos-grub2-theme only to reuse its bundled DejaVu .pf2; the stock NixOS logo is dropped (ours is in the background). Wired as isoImage.grubTheme so UEFI boot matches BIOS. distroId: set system.nixos.distroId = "nomarchy" so os-release is honest (ID=nomarchy, ID_LIKE=nixos). Safe — switch-to-configuration builds its "is this NixOS?" guard from the configured distroId (and /etc/NIXOS is the fallback), so rebuilds keep working. isNixos→false blanks the nixos.org URLs, so extraOSReleaseArgs restores them to the project. Adds checks.distro-id (runNixOSTest): boots distroId=nomarchy and runs switch-to-configuration dry-activate green; os-release eval-verified from the real downstream config; grub theme built + structure-verified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
34
flake.nix
34
flake.nix
@@ -206,6 +206,40 @@
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
# The distroId question (roadmap "Distro branding"): set
|
||||
# distroId = "nomarchy" so /etc/os-release is honest (ID=nomarchy,
|
||||
# ID_LIKE=nixos). The risk is switch-to-configuration's "is this
|
||||
# NixOS?" guard — but it builds the check from the *configured*
|
||||
# distroId (and /etc/NIXOS still exists), so a rebuild must still
|
||||
# work. This boots such a system and runs `switch-to-configuration
|
||||
# dry-activate` to prove the guard passes. Inline (not the full
|
||||
# module) so the VM stays minimal — the real wiring in default.nix
|
||||
# is covered by the downstream-template-system build.
|
||||
distro-id = pkgs.testers.runNixOSTest {
|
||||
name = "nomarchy-distro-id";
|
||||
nodes.machine = { ... }: {
|
||||
system.nixos.distroName = "Nomarchy";
|
||||
system.nixos.distroId = "nomarchy";
|
||||
# Test base omits switch-to-configuration by default; we need it
|
||||
# to exercise the "is this NixOS?" guard.
|
||||
system.switch.enable = true;
|
||||
};
|
||||
testScript = { nodes, ... }: ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# os-release reflects the rebrand, with the nixos lineage marker.
|
||||
machine.succeed("grep -q '^ID=nomarchy$' /etc/os-release")
|
||||
machine.succeed("grep -q '^ID_LIKE=nixos$' /etc/os-release")
|
||||
machine.succeed("grep -q '^NAME=Nomarchy$' /etc/os-release")
|
||||
|
||||
# The rebuild path must still recognise this as a NixOS install
|
||||
# (the guard is built from the configured distroId, not "nixos").
|
||||
machine.succeed(
|
||||
"${nodes.machine.system.build.toplevel}/bin/switch-to-configuration dry-activate"
|
||||
)
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# ─── Reference host ────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user