Switching to non-dkms nvidia drivers on base linux kernel

Hello everyone,
I wish to switch to the linux kernel instead of linux-zen as I believe it’ll work better with my hardware and will let me avoid nvidia-dkms driver recompilation on updates (as it loads the cpu 100% effectively frying my laptop for a few minutes straight).

I used pacman to install the linux package, and have afterwards booted into the basic kernel, but it lacks nvidia drivers (or at least I think so - nvidia gpu does not work, nvidia control panel does not detect the gpu). Trying to install the nvidia package, it conflicts with nvidia-dkms and upon trying to proceed past the conflic I am greeted with a dependency: garuda-nvidia-config relies on nvidia-dkms and thus cannot proceed.

What is the garuda-nvidia-config and is it safe to uninstall? I couldnt find any info on the package itself and what it provides. Beyond being a ‘meta configuration package for nvidia systems on garuda linux’ which frankly doesnt explain much. Another notable thing is that it is required by garuda-nvidia-prime-config which I suppose I need given I am on a hybrid system.

According to garuda settings gui utility, I have video-nvidia-prime-offload and video-linux drivers installed (both for nvidia discrete and intel integrated). Auto install proprietary driver button does its thing and returns ‘changes failed’ with ‘Starting… Done…’ in details - I assume it thinks that the correct drivers are installed.

So, what would be the procedure to get non-dkms drivers working on non-zen linux kernel?

System:
  Kernel: 6.14.9-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 15.1.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=b290f53a-a9c0-43d4-92d1-c19e8c49542f rw rootflags=subvol=@
    rd.udev.log_priority=3 vt.global_cursor_default=0 loglevel=3 ibt=off
  Desktop: i3 v: 4.24 with: i3bar tools: avail: i3lock,xautolock vt: 7
    dm: LightDM v: 1.32.0 Distro: Garuda base: Arch Linux
Machine:
  Type: Laptop System: Razer product: Blade v: 6.06
    serial: <superuser required> Chassis: type: 9 serial: <superuser required>
  Mobo: Razer model: Razer serial: <superuser required>
    part-nu: RZ09-01953E72 uuid: <superuser required> UEFI: Razer v: 4.02
    date: 02/22/2018
Battery:
  ID-1: BAT0 charge: 21.9 Wh (46.4%) condition: 47.2/70.2 Wh (67.2%)
    volts: 10.5 min: 11.4 model: Razer Blade type: Unknown serial: <filter>
    status: discharging
CPU:
  Info: model: Intel Core i7-7700HQ bits: 64 type: MT MCP arch: Kaby Lake
    gen: core 7 level: v3 note: check built: 2018 process: Intel 14nm family: 6
    model-id: 0x9E (158) stepping: 9 microcode: 0xF8
  Topology: cpus: 1x dies: 1 clusters: 4 cores: 4 threads: 8 tpc: 2
    smt: enabled cache: L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB
    desc: 4x256 KiB L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 800 min/max: 800/3800 scaling: driver: intel_pstate
    governor: powersave cores: 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800
    8: 800 bogomips: 44798
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
Graphics:
  Device-1: Intel HD Graphics 630 vendor: Razer USA driver: i915 v: kernel
    arch: Gen-9.5 process: Intel 14nm built: 2016-20 ports: active: eDP-1
    empty: DP-1,HDMI-A-1 bus-ID: 00:02.0 chip-ID: 8086:591b class-ID: 0300
  Device-2: NVIDIA GP106M [GeForce GTX 1060 Mobile] vendor: Razer USA
    driver: nvidia v: 570.153.02 alternate: nouveau,nvidia_drm
    non-free: 550-570.xx+ status: current (as of 2025-04; EOL~2026-12-xx)
    arch: Pascal code: GP10x process: TSMC 16nm built: 2016-2021 pcie: gen: 2
    speed: 5 GT/s lanes: 16 link-max: gen: 3 speed: 8 GT/s ports: active: none
    off: HDMI-A-2 empty: none bus-ID: 01:00.0 chip-ID: 10de:1c20
    class-ID: 0300
  Device-3: Realtek USB Camera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-7:4 chip-ID: 0bda:579f
    class-ID: 0e02 serial: <filter>
  Display: x11 server: X.Org v: 21.1.16 driver: X: loaded: intel,nvidia
    dri: i965 gpu: i915,nvidia,nvidia-nvswitch display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x1080 s-dpi: 96 s-size: 1013x285mm (39.88x11.22")
    s-diag: 1052mm (41.43")
  Monitor-1: not-matched mapped: HDMI-1-0 pos: left res: mode: 1920x1080
    hz: 60 scale: 100% (1) dpi: 90 size: 543x302mm (21.38x11.89")
    diag: 621mm (24.46") modes: N/A
  Monitor-2: not-matched mapped: eDP1 pos: primary,right res:
    mode: 1920x1080 hz: 60 scale: 100% (1) dpi: 157 size: 310x170mm (12.2x6.69")
    diag: 354mm (13.92") modes: N/A
  API: Vulkan v: 1.4.313 layers: 10 device: 0 type: discrete-gpu
    name: NVIDIA GeForce GTX 1060 driver: nvidia v: 570.153.02
    device-ID: 10de:1c20 surfaces: N/A device: 1 type: integrated-gpu
    name: Intel HD Graphics 630 (KBL GT2) driver: mesa intel v: 25.1.1-arch1.2
    device-ID: 8086:591b surfaces: N/A device: 2 type: cpu name: llvmpipe
    (LLVM 19.1.7 256 bits) driver: mesa llvmpipe v: 25.1.1-arch1.2 (LLVM
    19.1.7) device-ID: 10005:0000 surfaces: N/A
  API: OpenGL Message: Unable to show GL data. glxinfo is missing.
  Info: Tools: api: vulkaninfo gpu: nvidia-settings,nvidia-smi
    x11: xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel CM238 HD Audio vendor: Razer USA driver: snd_hda_intel
    v: kernel alternate: snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:a171
    class-ID: 0403
  Device-2: NVIDIA GP106 High Definition Audio driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 01:00.1
    chip-ID: 10de:10f1 class-ID: 0403
  API: ALSA v: k6.14.9-zen1-1-zen status: kernel-api
    tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.4.4 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter
    vendor: Rivet Networks Killer Wireless-n/a/ac 1535 driver: ath10k_pci
    v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 bus-ID: 3b:00.0
    chip-ID: 168c:003e class-ID: 0280 temp: 33.0 C
  IF: wlp59s0 state: up mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Qualcomm Atheros QCA61x4 Bluetooth 4.0 driver: btusb v: 0.8
    type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-4:2
    chip-ID: 0cf3:e300 class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 0 state: down bt-service: disabled
    rfk-block: hardware: no software: yes address: N/A
Drives:
  Local Storage: total: 476.94 GiB used: 107.16 GiB (22.5%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
    model: MZVLW512HMJP-00000 size: 476.94 GiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: CXY7501Q temp: 44.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 124 GiB size: 124 GiB (100.00%) used: 107.14 GiB (86.4%)
    fs: btrfs dev: /dev/nvme0n1p5 maj-min: 259:5
  ID-2: /boot/efi raw-size: 100 MiB size: 96 MiB (96.00%)
    used: 27.7 MiB (28.8%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-3: /home raw-size: 124 GiB size: 124 GiB (100.00%)
    used: 107.14 GiB (86.4%) fs: btrfs dev: /dev/nvme0n1p5 maj-min: 259:5
  ID-4: /var/log raw-size: 124 GiB size: 124 GiB (100.00%)
    used: 107.14 GiB (86.4%) fs: btrfs dev: /dev/nvme0n1p5 maj-min: 259:5
  ID-5: /var/tmp raw-size: 124 GiB size: 124 GiB (100.00%)
    used: 107.14 GiB (86.4%) fs: btrfs dev: /dev/nvme0n1p5 maj-min: 259:5
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 15.5 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 max-streams: 8
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 61.0 C pch: 52.5 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB available: 15.5 GiB used: 1.34 GiB (8.7%)
  Processes: 255 Power: uptime: 0m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 6.16 GiB services: power-profiles-daemon,
    upowerd, xfce4-power-manager Init: systemd v: 257 default: graphical
    tool: systemctl
  Packages: pm: pacman pkgs: 1945 libs: 486 tools: pacseek,pamac,paru
    Compilers: clang: 19.1.7 gcc: 15.1.1 Shell: garuda-inxi default: Bash
    v: 5.2.37 running-in: xfce4-terminal inxi: 3.3.38
Garuda (2.7.2-1):
  System install date:     2022-10-10
  Last full system update: 2025-06-01
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager mkinitcpio nvidia-dkms
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:   

Basically it is a collection of the packages used to detect your Nvidia HW and provide some packages.
If it is preventing your uninstall, you can go on and remove it, along with the dependencies.
Make sure to install nvidia-prime afterwards.
Here is the relevant PKGBUILD, to see what’s include:
https://gitlab.com/garuda-linux/pkgbuilds/-/blob/main/mhwd-db-garuda/PKGBUILD?ref_type=heads
And if you’ll need it in the future to go back to linux-zen and dims drivers, you can of course reinstall it.

3 Likes

Huh, thanks for the link.

I am not quite sure how packages like this work - will uninstalling it uninstall things inside it like nvidia-prime and nvidia-prime-render-offload, thus leaving me to reconfigure it all after installing non-dkms drivers, or will it leave everything as is, just requiring the new driver to be installed?

1 Like

I don’t have any way to check, because I don’t use Nvidia, but I think you could check if they are dependencies (I think so), and maybe uninstall the main package without dependencies (-R) and then selectively uninstall what you don’t need. Probably nothing, because nvidia-dkms would be automatically removed when installing the nvidia package.
Edit:
Considering that also the other metapackage garuda-nvidia-prime-config should be involved, since having garuda-nvidia-config as a dependency, I’d try:

sudo pacman -R garuda-nvidia-prime-config garuda-nvidia-config nvidia-dkms && sudo pacman -S nvidia
3 Likes