One NVIDIA driver source
Summary: exactly one package provides the NVIDIA driver. On Pop!_OS that is
system76-driver-nvidia, and nothing else may be added beside it.
Context
The Fedora playbook declared two sources for the same component:
sources:
- rpmfusion-nonfree-nvidia-driver # 0 packages actually installed
- cuda-fedora{{ ... }}-{{ arch }} # 25 packages installed -- this one won
Both ship nvidia-driver. CUDA’s repo won on that machine. Nothing chose that;
dependency resolution order did. A rebuild on a different day, or with repo
priorities nudged, could resolve the other way and produce a machine that is
“the same configuration” but a different driver.
Details
Why it matters more than it looks
A driver that comes from an unexpected source still works, right up until the kernel updates and only one of the two sources has a matching build. Then you get a black screen and a bisect through two repos you did not know were competing.
What the Pop version does
hardware_nvidia_packages:
- system76-driver-nvidia
One entry, with a comment in defaults/main.yml saying explicitly not to add
nvidia-driver-<NNN> beside it. The prototype had done exactly that — it listed
system76-driver-nvidia and nvidia-driver-550, reproducing the Fedora
mistake on a new distro before the new distro was even installed.
system76-driver-nvidia is the right single source here because System76 builds
and validates it against their own kernel, and signs it for Secure Boot. That
last part is not a small convenience: the Fedora side needed an akmods dance and
a MOK enrollment that the vendor path skips entirely.
The check that catches regressions
apt list --installed 2>/dev/null | grep -c '^nvidia-driver-'
Should be 0. Anything else means a second source got in.
Related
- No host CUDA toolkit — see-also: same cleanup, the compute half rather than the driver half.
- b08x.workstation layout — supports: how single-source is enforced in the role.