Unofficial community reference. Not affiliated with 37signals or the Omacom Foundation. Download Omarchy only from omarchy.org.
omarchylinux.org Unofficial field manual

NVIDIA drivers on Omarchy 4

How Omarchy 4 detects your NVIDIA GPU, which driver package it installs, the env vars it sets, and the fix order when the NVIDIA driver breaks.

Workaround available Applies to Omarchy 4.0.0 and later Last verified 2026-09-16 on 4.0.4
Short answer

Omarchy 4 picks the driver by PCI device ID: Turing and newer get nvidia-open-dkms, Maxwell through Volta get nvidia-580xx-dkms, older cards get nothing. Most breakage is DKMS having no module built for the kernel you actually booted. Install the matching dkms package plus headers for every installed kernel, rebuild the initramfs, and reboot. On hybrid laptops also override LIBVA_DRIVER_NAME.

On this page
  1. The fix
  2. Verify it worked
  3. Why it happens
  4. If that did not work
  5. Related

Omarchy 4 has no NVIDIA chapter in the manual and no driver picker in the menu. The whole policy lives in two short files: install/hardware/nvidia.sh chooses the packages, and default/hypr/nvidia.lua sets the session environment. Almost every NVIDIA report on 4.x is one of three things: the wrong branch got picked, DKMS has no module for the kernel you booted, or the VA-API default is wrong for a hybrid laptop. Work through them in that order.

The fix

1. Find out which branch your card is on

lspci -nn | grep -Ei 'vga|3d|display'
omarchy-hw-nvidia; echo "nvidia=$?"
omarchy-hw-nvidia-gsp; echo "gsp=$?"
omarchy-hw-nvidia-without-gsp; echo "legacy=$?"

Exit code 0 means yes. Since 4.0.0 these read PCI IDs from /sys/bus/pci/devices instead of shelling out to lspci. A device ID of 0x1e00 or higher is Turing or newer and takes the GSP branch. 0x1340 up to 0x1e00 is Maxwell, Pascal or Volta and takes the legacy branch. Below 0x1340 nothing matches and the installer prints No compatible driver for your NVIDIA GPU.

2. Install the matching packages

Turing and newer:

sudo pacman -S --needed nvidia-open-dkms nvidia-utils lib32-nvidia-utils libva-nvidia-driver

Maxwell, Pascal, Volta:

sudo pacman -S --needed nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils

The 580xx packages come from the Omarchy repository, not from Arch. They are present in the stable, rc and edge channels at 580.178.04 as of 2026-09-17. If pacman says error: target not found: nvidia-580xx-dkms, your mirror list is missing the Omarchy repo or the mirror is unreachable. See /releases/channels/.

Use the DKMS package, not a prebuilt nvidia-open. A prebuilt package carries modules for one specific Arch kernel and nothing is prebuilt for linux-omarchy, which is exactly the gap #12187 fell into.

3. Give DKMS headers for every installed kernel

On x86_64 machines that are not T2 Macs, 4.0.4 installs the bespoke linux-omarchy kernel and makes it the first Limine boot entry. DKMS needs headers for it or no NVIDIA module gets built for the entry you now boot by default.

pacman -Qq | grep -E '^linux(-omarchy|-lts|-zen|-t2)?$'
sudo pacman -S --needed linux-omarchy-headers
dkms status

dkms status should list your nvidia module as installed against every kernel version you can boot. 4.0.4 also ships a migration that installs linux-omarchy-headers where a fresh ISO install left them out; omarchy-migrate applies it if it has not run yet.

4. Check the boot pieces

cat /etc/modprobe.d/nvidia.conf
cat /etc/mkinitcpio.conf.d/nvidia.conf

The first should hold options nvidia_drm modeset=1. The second should add nvidia nvidia_modeset nvidia_uvm nvidia_drm to MODULES. If either is missing, recreate it and rebuild.

5. Rebuild and reboot

sudo limine-mkinitcpio
sudo limine-entry-tool --tree
reboot

Read the rebuild output rather than trusting the exit code. mkinitcpio can print a successful image line and then ERROR: mkinitcpio failed for kernel X, skipping right after it, which is how #5706 turned a DKMS failure into a silent login loop.

6. Hybrid laptops: undo the VA-API default

Only if an iGPU drives your displays. Add to ~/.config/hypr/hyprland.lua, which loads after the defaults:

hl.env("LIBVA_DRIVER_NAME", "iHD")      -- radeonsi on an AMD iGPU

Then either relogin or, for the current session, systemctl --user set-environment LIBVA_DRIVER_NAME=iHD and restart the browser.

Verify it worked

nvidia-smi
cat /sys/module/nvidia_drm/parameters/modeset
systemctl --user show-environment | grep -E 'NVD_BACKEND|LIBVA_DRIVER_NAME|__GLX'

modeset should read Y. On a GSP card the environment should show NVD_BACKEND=direct, LIBVA_DRIVER_NAME=nvidia and __GLX_VENDOR_LIBRARY_NAME=nvidia. On a Maxwell to Volta card you should see NVD_BACKEND=egl and __GLX_VENDOR_LIBRARY_NAME=nvidia, with LIBVA_DRIVER_NAME correctly absent. If you set the override in step 6, your value wins.

vainfo --display drm --device /dev/dri/renderD128 tells you which VA-API driver actually loaded.

Why it happens

NVIDIA kernel modules and userspace libraries must match exactly. Anything that lets them drift, a DKMS build that fails, headers that were never installed, a new default kernel with no module built for it, produces the same class of failure: Hyprland aborts at EGL init, SDDM bounces you back, or the session freezes seconds after login. That is the mechanism behind #5706, filed in May 2026 before Quattro, and #12187 on 4.0.4, where the NVIDIA modules existed only under the stock kernel’s directory while linux-omarchy had become the default entry.

The branch split exists because NVIDIA dropped Maxwell, Pascal and Volta in its 590 drivers. Omarchy added the legacy 580xx path in v3.3.0 to keep those cards working. In 3.x the split was decided by matching card names out of lspci, which misread Turing-era MX parts as legacy and caused pacman conflicts, as reported in #6216. v4.0.0 replaced that with the device ID test, which also stopped the detector from waking a runtime-suspended dGPU on every config reload.

The environment variables are newer trouble. In 4.0.0 they were never set at all: the helper behind them used os.execute, and Hyprland reaps child processes itself before Lua can collect an exit status, so every branch took the false path (#7755). PR #6939 rewrote the helper and v4.0.1 shipped it. That fix then turned on LIBVA_DRIVER_NAME=nvidia for the first time on hybrid laptops where the iGPU owns the displays, so browsers started decoding on the dGPU and importing frames across PCIe into an iGPU GL context. Reporters on #8215 and #8328 measured corrupted frames, dead decode, higher dGPU power draw and juddery scrolling. nvidia.lua is byte-identical from v4.0.0 through v4.0.4 and unchanged on the quattro branch as of 2026-09-17. Two PRs that gate the variables on whether NVIDIA drives a display, #7851 and #9483, are still open, and a third, #11431, was closed without merging. Until one lands, the user override is the only remedy.

If that did not work

Evidence for 4.0.4 specifically is still thin. #12187 was filed on 2026-09-16 with one reaction and no comments, so treat the kernel and module mismatch as a single well-documented report rather than a settled pattern.

Upstream threads about this error

935 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.

IssueStateCommentsOpened
#3891 Videos not playing after recent update (Omarchy v3.2.3)closed922025-12-16
#3899 Chromium GPU/Ozone errors after update to 3.2.3 · fixed by #27 closed832025-12-16
#3877 omarchy failed everything when yay not working after a failed update, dead lockclosed462025-12-15
#26 System Freeze on Wake-upclosed562025-07-02
#2184 Chrome crashes when moving tile between monitors on Hyprland · fixed by #2394 closed332025-10-03
#1441 Zed fails to load on Intel GPU · fixed by #2009 closed222025-09-04
#2870 Steam won't startclosed282025-10-26
#8215 4.0.1: `shell_succeeds` fix enables NVDEC VAAPI routing on hybrid laptops with Intel-driven displays, corrupting browser videoopen342026-08-25
#4 Nvidia Supportclosed342025-06-27
#1571 Can't become sudo sometimes, password not acceptedclosed292025-09-10

Accepted answers upstream

Questions people ask

Does Omarchy install nvidia-open or the proprietary driver?
Omarchy installs nvidia-open-dkms on Turing and newer. On Maxwell, Pascal and Volta it installs the proprietary legacy branch, nvidia-580xx-dkms. There is no menu option to switch between them.
Why does my old card get no driver at all?
The detector only claims PCI device IDs from 0x1340 up. Kepler and older fall below that line, so the installer prints a message and skips the driver. Those cards fall back to nouveau.
Do I need to set NVD_BACKEND or __GLX_VENDOR_LIBRARY_NAME myself?
No. default/hypr/nvidia.lua sets them per session from 4.0.1 onward. On 4.0.0 they were silently never set, which PR 6939 fixed.

Sources and credit

Fixes on this page were worked out by dhh (Fixed o.shell_succeeds() inside Hyprland so the NVIDIA env vars fire at all), sanity (Traced the login loop to a DKMS build failure leaving a stale kernel image), SisyphusOfCorinth (Isolated the 4.0.1 VA-API routing regression on hybrid laptops), Nord-Nogare (Reported the 4.0.4 freeze when NVIDIA modules exist only for the old kernel). Text here is our own paraphrase; follow the links for the original threads.

Unofficial. Verify against the official manual for your version. Improve this page Markdown version Sources