feat(hardware): xe-aware GuC, class-based NPU detect, latestKernel + VM test
Harden the hardware-enablement broad seed for newer hardware: - xe vs i915: intel.guc emits the i915 param (i915.enable_guc=3), which the newer `xe` driver (Lunar Lake / Battlemage / Panther Lake, recent Xe GPUs) ignores — it enables GuC by default. hardware-db.sh now reads the in-use GPU driver (lspci -k) and writes `intel.guc = false` on xe hardware, so the toggle isn't a misleading no-op there. - NPU detection by PCI accelerator class [1200] (+ keywords), attributing the vendor, instead of a fixed device-ID list — so new NPUs (e.g. Panther Lake) are caught without a code change. Known IDs kept as a fallback/reference. - Kernel awareness: a nomarchy.hardware.latestKernel escape hatch (linuxPackages_latest) for very-new hardware whose drivers only just landed, and a build-time warning when npu.enable predates the shipped kernel (amdxdna needs 6.14+, intel_vpu wants recent). Downstream default is 6.18, which already carries amd-pstate + amdxdna; the reference host pins latest. - VM test (checks.hardware-toggles, pkgs.testers.runNixOSTest): boots a minimal VM with the toggles on and asserts the config landed — amd_pstate + i915.enable_guc in /proc/cmdline, fprintd.service present, pam_fprintd in /etc/pam.d/sudo. Passing. (Hardware behaviour still needs bare metal.) Docs: README + template note latestKernel; ROADMAP records the hardening. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
25
flake.nix
25
flake.nix
@@ -134,6 +134,31 @@
|
||||
downstream.nixosConfigurations.default.config.system.build.toplevel;
|
||||
downstream-template-home =
|
||||
downstream.homeConfigurations.me.activationPackage;
|
||||
|
||||
# Config-level VM assertions for the nomarchy.hardware.* toggles —
|
||||
# what they SET (kernel cmdline, fprintd, PAM). Real hardware
|
||||
# behaviour (firmware/driver/device) needs bare metal and is out of
|
||||
# scope here. Imports only hardware.nix, so the VM stays minimal.
|
||||
hardware-toggles = pkgs.testers.runNixOSTest {
|
||||
name = "nomarchy-hardware-toggles";
|
||||
nodes.machine = { ... }: {
|
||||
imports = [ ./modules/nixos/hardware.nix ];
|
||||
nomarchy.hardware = {
|
||||
intel.enable = true;
|
||||
amd.enable = true;
|
||||
fingerprint = { enable = true; pam = true; };
|
||||
npu.enable = true;
|
||||
};
|
||||
};
|
||||
testScript = ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
cmdline = machine.succeed("cat /proc/cmdline")
|
||||
assert "amd_pstate=active" in cmdline, cmdline
|
||||
assert "i915.enable_guc=3" in cmdline, cmdline
|
||||
machine.succeed("systemctl cat fprintd.service")
|
||||
machine.succeed("grep -q pam_fprintd /etc/pam.d/sudo")
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# ─── Reference host ────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user