Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-4573GitHub issuePublicReceived

NVIDIA installs: `kms` hook bundles ~100 MB of unused nouveau GSP firmware into every initramfs/UKI

Reported by matjam · filed Aug 13, 2026Closed upstream on 2026-08-13 by the merge of PR #6791 (closed by dhh). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

NVIDIA installs: `kms` hook bundles ~100 MB of unused nouveau GSP firmware into every initramfs/UKIrevision 1 · captured 2026-10-04 12:03 UTC via poll

What happens

On a machine using the proprietary NVIDIA driver, Omarchy's initramfs carries the in-tree nouveau driver plus its GSP firmware blobs — about 100 MB of compressed payload that is never used. With the UKI setup on Limine, my image was 256 MB (.initrd = 238 MB); a normal size for this configuration is 20–60 MB.

Largest cpio entries:

 49.36 MiB  usr/lib/firmware/nvidia/ga102/gsp/gsp-570.144.bin.zst
 25.07 MiB  usr/lib/firmware/nvidia/ga102/gsp/gsp-535.113.01.bin.zst
 13.37 MiB  usr/lib/firmware/nvidia/tu102/gsp/gsp-570.144.bin.zst
 12.57 MiB  usr/lib/firmware/nvidia/tu102/gsp/gsp-535.113.01.bin.zst
 11.47 MiB  usr/lib/modules/…/updates/dkms/nvidia.ko.zst
  1.16 MiB  usr/lib/modules/…/kernel/drivers/gpu/drm/nouveau/nouveau.ko.zst

Why

Two Omarchy components each do half the NVIDIA job and nothing reconciles them:

  • omarchy-settings-dev ships /etc/mkinitcpio.conf.d/omarchy_hooks.conf with kms in HOOKS.
  • install/hardware/nvidia.sh writes /etc/mkinitcpio.conf.d/nvidia.conf with MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) and options nvidia_drm modeset=1 — proprietary early KMS, done correctly.

The kms hook then adds in-tree DRM drivers anyway; autodetect keeps nouveau because it matches the NVIDIA PCI device, and mkinitcpio bundles every firmware blob in nouveau's modinfo. The Arch wiki (NVIDIA → mkinitcpio) says to remove kms from HOOKS in exactly this configuration.

So every Omarchy user on the proprietary driver carries ~100 MB of dead firmware in each initramfs — doubled on /boot by the Limine fallback history, and slowing sd-stub's TPM measurement of the UKI.

Verified fix

A drop-in that subtracts kms from whatever omarchy_hooks.conf sets, e.g. /etc/mkinitcpio.conf.d/zz-no-kms.conf:

_hooks_no_kms=()
for _hook in ${HOOKS[@]}; do
    [[ $_hook == kms ]] || _hooks_no_kms+=("$_hook")
done
HOOKS=("${_hooks_no_kms[@]}")
unset _hooks_no_kms _hook

Result on my machine (RTX 4090, nvidia-open-dkms 610.57.04): UKI 256,183,296 → 144,066,048 bytes. nouveau.ko and its firmware gone; the two gsp_{ga10x,tu10x}.bin blobs owned by nvidia-utils correctly retained; all four nvidia DKMS modules still present; early KMS still works via nvidia_drm modeset=1 (modconf bundles the modprobe.d file). Boots fine.

A fix in Omarchy could be conditional: nvidia.sh already knows it's setting up the proprietary driver and could drop/filter the kms hook at the same time it writes nvidia.conf.

Possibly related prior art: #3619, where removing kms fixed a black LUKS prompt on Intel — a different symptom of the same hook loading drivers too early.

System

  • omarchy version: 4.0.0.r1689.g38542a1-1 (settings-dev channel)
  • linux 7.1.8.arch1-3, nvidia-open-dkms 610.57.04-1, RTX 4090, Limine + UKI + LUKS

Filed by Claude Fable 5 via Claude Code.

View raw text
## What happens

On a machine using the proprietary NVIDIA driver, Omarchy's initramfs carries the in-tree `nouveau` driver plus its GSP firmware blobs — about 100 MB of compressed payload that is never used. With the UKI setup on Limine, my image was **256 MB** (`.initrd` = 238 MB); a normal size for this configuration is 20–60 MB.

Largest cpio entries:

```
 49.36 MiB  usr/lib/firmware/nvidia/ga102/gsp/gsp-570.144.bin.zst
 25.07 MiB  usr/lib/firmware/nvidia/ga102/gsp/gsp-535.113.01.bin.zst
 13.37 MiB  usr/lib/firmware/nvidia/tu102/gsp/gsp-570.144.bin.zst
 12.57 MiB  usr/lib/firmware/nvidia/tu102/gsp/gsp-535.113.01.bin.zst
 11.47 MiB  usr/lib/modules/…/updates/dkms/nvidia.ko.zst
  1.16 MiB  usr/lib/modules/…/kernel/drivers/gpu/drm/nouveau/nouveau.ko.zst
```

## Why

Two Omarchy components each do half the NVIDIA job and nothing reconciles them:

- `omarchy-settings-dev` ships `/etc/mkinitcpio.conf.d/omarchy_hooks.conf` with `kms` in `HOOKS`.
- `install/hardware/nvidia.sh` writes `/etc/mkinitcpio.conf.d/nvidia.conf` with `MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)` and `options nvidia_drm modeset=1` — proprietary early KMS, done correctly.

The `kms` hook then adds in-tree DRM drivers anyway; `autodetect` keeps `nouveau` because it matches the NVIDIA PCI device, and mkinitcpio bundles every firmware blob in nouveau's modinfo. The [Arch wiki (NVIDIA → mkinitcpio)](https://wiki.archlinux.org/title/NVIDIA#Early_loading) says to remove `kms` from `HOOKS` in exactly this configuration.

So every Omarchy user on the proprietary driver carries ~100 MB of dead firmware in each initramfs — doubled on `/boot` by the Limine fallback history, and slowing sd-stub's TPM measurement of the UKI.

## Verified fix

A drop-in that subtracts `kms` from whatever `omarchy_hooks.conf` sets, e.g. `/etc/mkinitcpio.conf.d/zz-no-kms.conf`:

```sh
_hooks_no_kms=()
for _hook in ${HOOKS[@]}; do
    [[ $_hook == kms ]] || _hooks_no_kms+=("$_hook")
done
HOOKS=("${_hooks_no_kms[@]}")
unset _hooks_no_kms _hook
```

Result on my machine (RTX 4090, `nvidia-open-dkms` 610.57.04): UKI **256,183,296 → 144,066,048 bytes**. `nouveau.ko` and its firmware gone; the two `gsp_{ga10x,tu10x}.bin` blobs owned by `nvidia-utils` correctly retained; all four nvidia DKMS modules still present; early KMS still works via `nvidia_drm modeset=1` (`modconf` bundles the modprobe.d file). Boots fine.

A fix in Omarchy could be conditional: `nvidia.sh` already knows it's setting up the proprietary driver and could drop/filter the `kms` hook at the same time it writes `nvidia.conf`.

Possibly related prior art: #3619, where removing `kms` fixed a black LUKS prompt on Intel — a different symptom of the same hook loading drivers too early.

## System

- `omarchy version`: 4.0.0.r1689.g38542a1-1 (settings-dev channel)
- linux 7.1.8.arch1-3, nvidia-open-dkms 610.57.04-1, RTX 4090, Limine + UKI + LUKS

Filed by Claude Fable 5 via Claude Code.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.