docs: hardware support guide + product backlog
All checks were successful
Check / eval (push) Successful in 3m10s

Add docs/HARDWARE.md (layers, install path, firmware/fingerprint/NVIDIA
deep dives, unsupported machines, contributing a DMI line). Link from
README and MIGRATION; queue firmware UI, doctor checks, detect-hw CLI,
and related PROPOSED items in BACKLOG.
This commit is contained in:
Bernardo Magri
2026-07-09 09:04:27 +01:00
parent d09c978b9b
commit 896b41faa3
4 changed files with 482 additions and 2 deletions

View File

@@ -517,6 +517,89 @@ flagged separately from fidelity bugs.*
design) — optional README note so users know what ships and how to
override. Cost: docs only.
### Hardware product (investigation 2026-07-09)
*Full write-up: [`docs/HARDWARE.md`](../docs/HARDWARE.md). Install-time
autodetect is strong; day-2 lifecycle (firmware, biometrics, re-detect,
NVIDIA depth) is still mostly CLI. Items below are product work on top
of that doc — design notes live there (§4§10).*
- **System Firmware (fwupd product surface)**
`services.fwupd.enable` is already default-on and never auto-flashes,
but users only learn about `fwupdmgr` from a README sentence. Add a
self-gated menu entry (System submenu) and/or Control Center row that:
refreshes metadata, lists updatable devices, confirms, runs
`fwupdmgr update`, then prints a reboot note when needed. Never
silent-flash (pillar 1). Optional: first-boot / MOTD one-liner when
the daemon is active. Spec: docs/HARDWARE.md §4. Cost: menu script +
optional MOTD; V2 menu, V3 on real LVFS hardware.
- **Doctor hardware section (read-only)**
Extend `nomarchy-doctor` with the same pass/fail + one-fix-command
contract for: NetworkManager connectivity, default PipeWire sink,
optional GPU smoke (`vainfo`/`glxinfo` if present), fprintd unit when
fingerprint was enabled, fwupd active (+ warn if `get-updates`
non-empty), laptop charge-threshold sysfs when a limit is set. Spec:
docs/HARDWARE.md §10. Cost: doctor.sh sections; V1 in existing
`checks.doctor` where fakes exist, rest V2/V3.
- **`nomarchy-detect-hw` CLI (post-install re-probe)**
The installer already has pure `nomarchy_detect_hw` stdout protocol
(MODULE / NOMARCHY / DETAIL). Ship it as a package on PATH that
prints suggested `hardwareProfile = [ … ]` and `system.nix` snippets
without reinstalling — closes the template/migration gap and “I
swapped the WiFi card.” Does not rewrite the flake unless a later
`--apply` is explicitly designed. Spec: docs/HARDWARE.md §8. Cost:
extract script + package + man/README pointer; V0V1.
- **Fingerprint menu: enroll / list (+ optional PAM toggle)**
Installer enables fprintd on known USB VIDs but enroll is CLI-only
(`fprintd-enroll`) and PAM is a commented rebuild. Self-gated System
row when `fprintd` is present: enroll, list, delete; optional “use
for login” that writes `settings`/system intent + rebuild note
(Control Center Bluetooth pattern). Spec: docs/HARDWARE.md §5.
Cost: menu module; V3 enroll on real reader (`[blocked:hw]` for
full path).
- **Installer: NVIDIA commented system.nix guidance**
Detection already adds `common-gpu-nvidia`; there is no
`nomarchy.hardware.nvidia.*` and hybrid/PRIME is wiki territory.
When NVIDIA is detected, emit a **commented** block in generated
`system.nix` (same style as ROCm/NPU) pointing at PRIME /
powerManagement / open-module and docs/HARDWARE.md §6 — not a full
second stack. Cost: install script strings; V0 + doc.
- **CI: hardware-db module names ∈ nixos-hardware**
Every `HARDWARE_DB` third field must exist in the pinned
`nixos-hardware.nixosModules` or installs break only on matching
DMI. Add a pure `checks.*` (or option-docs-style runCommand). Pairs
with existing “installer pure contracts” proposal. Cost: small
check; V0.
- **Installer: `usbutils` on PATH for fingerprint probe**
Fingerprint path prefers `lsusb` but package wrap has `pciutils`
only; sysfs VID walk is the fallback. Add `usbutils` to
`nomarchy-install` PATH for reliable detection. Cost: one package
in wrap; V0.
- **Document + README table: `nomarchy.hardware.i2c.*`**
`i2c.ddcci` is **mkDefault true** (external monitor brightness) but
missing from README option tables → `checks.option-docs` red (also
under docs-drift pack). Document in README + HARDWARE.md already
mentions ddcci; close option-docs. Cost: docs; V0 with option-docs.
- **Post-install hardware hints (MOTD / first session)**
When relevant services exist, surface one line each: firmware
(`fwupdmgr get-updates`), fingerprint (`fprintd-enroll`), optional
“run nomarchy-doctor”. Avoid nagging — once or until dismissed.
Spec: HARDWARE.md §4/§5. Cost: small greeter/MOTD or notify; V2/V3.
- **NVIDIA first-class options (larger, optional)**
Only if a maintainer commits to hybrid testing: thin
`nomarchy.hardware.nvidia.*` wrapping common PRIME/power patterns.
Prefer the commented-guidance item first; promote only with
hardware-queue coverage. Cost: high; `[big]` + `[blocked:hw]`.
## Decisions `[human]`