<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/tests/nvidia-preflight, branch main</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-07-24T17:19:04+00:00</updated>
<entry>
<title>fix(installer): eight fixes from an overnight bug-hunt and its review</title>
<updated>2026-07-24T17:19:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-24T17:19:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=a9067341a3ca358c115531e76c51462ca948e76d'/>
<id>urn:sha1:a9067341a3ca358c115531e76c51462ca948e76d</id>
<content type='text'>
I squashed these because the per-bug reasoning lives in todo.org, which this commit carries.

Two could cost a machine. configure_initramfs_hook swapped the udev hook for systemd on a LUKS root, leaving a standalone encrypt hook under an init that never runs it. The rebuild succeeds and the installer exits clean, then the root won't unlock at the next boot. trim_firmware ran pacman -Rdd against twelve firmware packages behind a DMI gate reading product_name, where "Framework" never appears. That left it dead on the hardware it targets, and dangerous to fix the obvious way: this machine is a Framework Desktop whose Ryzen iGPU needs the amdgpu firmware. It refuses on PCI modalias evidence now.

wipedisk discarded before it checked. blkdiscard ran with -f, which disables the exclusive open, so picking the wrong disk destroyed a live filesystem and then reported that nothing had happened.

Four more are smaller. The NVIDIA preflight aborted dwm and headless installs over a driver floor they never need. zfs-replicate exited 0 after every dataset failed. Unattended installs blocked on two prompts, and the first fix for that inherited a [Y/n] default into passwordless console login. A fresh install left the dotfiles repo permanently dirty.

The review found a pattern worth more than any single fix. Helpers had thorough tests and none proved they were called. Deleting the call left five suites green, including the guard on that pacman -Rdd. CALL_SITES now pins nine caller/callee pairs.

The suite runs 341 tests at exit 0, with no new shellcheck findings. I proved every guard by deleting it and watching the intended test go red.
</content>
</entry>
<entry>
<title>refactor(installer): extract validate_yesno and a NVIDIA driver-floor constant</title>
<updated>2026-07-20T21:00:39+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T21:00:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=04d344d90449d3fe4f0d0b474b0b50e61ff2a79a'/>
<id>urn:sha1:04d344d90449d3fe4f0d0b474b0b50e61ff2a79a</id>
<content type='text'>
Four near-identical blocks validated that AUTOLOGIN, NO_GPU_DRIVERS, INSTALL_CLAUDE_CODE, and INSTALL_DEVICE_UDEV_RULES were empty or exactly yes/no. They collapse into a validate_yesno helper the callers guard with `|| exit 1`.

The NVIDIA driver floor of 535 was a magic literal in the comparison and three prose lines. It now lives in a NVIDIA_MIN_DRIVER constant, and the nvidia-preflight test sources that constant alongside the function it extracts.

This is the safe, purely-testable slice of the refactor rollup. The structural extractions that touch the installer's system-mutation paths -- the GPU modalias scan, the stow and retry loops, the display-server/window-manager dispatch, and the snapper/fsck/GRUB/waybar sed blocks -- are split into a follow-up so they get characterization coverage first rather than a blind rewrite.
</content>
</entry>
<entry>
<title>feat(preflight): add NVIDIA/Wayland check with driver-version gate</title>
<updated>2026-07-02T21:14:22+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T21:14:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=75171eedadea6f32554bc5f637a6cd13353fa122'/>
<id>urn:sha1:75171eedadea6f32554bc5f637a6cd13353fa122</id>
<content type='text'>
Installing Hyprland on an NVIDIA box silently produced a rough Wayland session. nvidia_preflight_report detects the card via modalias (DRM, then PCI display-class only), prints the required env vars and the pre-Turing AUR caveat, and checks the repo's nvidia-utils major against 535. preflight_checks aborts when the requirement can't be met and asks before continuing on a detected card. 9 unit tests over fake modalias trees and a fake pacman.
</content>
</entry>
</feed>
