# NVK error when using prop nvidia drivers

**URL:** https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300
**Category:** Help
**Created:** [April 12, 2024, 11:51pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300 "2024-04-12T23:51:32Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![timon-schelling](https://discourse.nixos.org/user_avatar/discourse.nixos.org/timon-schelling/32/17037_2.png) [@timon-schelling](https://discourse.nixos.org/u/timon-schelling)
#### Post date: [April 12, 2024, 11:51pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/1 "2024-04-12T23:51:32Z")

</div>

I am using the proprietary nvidia driver with this config:

```auto
services.xserver.videoDrivers = ["nvidia"];
boot.kernelParams = ["nvidia.NVreg_PreserveVideoMemoryAllocations=1"];
hardware.nvidia = {
  modesetting.enable = true;
  powerManagement.enable = true;
  powerManagement.finegrained = false;
  open = false;
  nvidiaSettings = false;
  package = config.boot.kernelPackages.nvidiaPackages.beta;
};

```

In some applications (some electron apps under wayland, rio terminal and some more native wayland apps) I get errors, all including `DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.`. My understanding is that I am not using the `nouveau` kernel drivers nor NVK. Why am I getting an error from some mesa nouveau device code?

error printed by [src/nouveau/winsys/nouveau\_device.c · main · Mesa / mesa · GitLab](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/nouveau/winsys/nouveau_device.c?ref_type=heads#L292)

```auto
618693:0412/223607.303310:ERROR:browser_main_loop.cc(275)] Gtk: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
libEGL warning: egl: failed to create dri2 screen
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
[618746:0412/223607.632139:ERROR:gbm_wrapper.cc(253)] Failed to export buffer to dma_buf: No such file or directory (2)
[618746:0412/223607.632271:ERROR:gbm_pixmap_wayland.cc(82)] Cannot create bo with format= RGBA_8888 and usage=SCANOUT
[618746:0412/223607.632439:ERROR:gbm_wrapper.cc(253)] Failed to export buffer to dma_buf: No such file or directory (2)
[618746:0412/223607.632497:ERROR:gbm_pixmap_wayland.cc(82)] Cannot create bo with format= RGBA_8888 and usage=GPU_READ
[618746:0412/223607.632556:ERROR:shared_image_factory.cc(926)] CreateSharedImage: could not create backing.
[618746:0412/223607.632610:ERROR:shared_image_factory.cc(758)] DestroySharedImage: Could not find shared image mailbox
[618746:0412/223607.632716:ERROR:gpu_service_impl.cc(1089)] Exiting GPU process because some drivers can't recover from errors. GPU process will restart shortly.
[618763:0412/223607.642137:ERROR:command_buffer_proxy_impl.cc(127)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[618693:0412/223607.657802:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=8704
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
libEGL warning: egl: failed to create dri2 screen

```

---

<div class="post-metadata">

### Author: ![timon-schelling](https://discourse.nixos.org/user_avatar/discourse.nixos.org/timon-schelling/32/17037_2.png) [@timon-schelling](https://discourse.nixos.org/u/timon-schelling)
#### Post date: [April 13, 2024, 3:07pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/2 "2024-04-13T15:07:13Z")

</div>

Config change removed the line `DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.` other errors still exist. I have now set `hardware.opengl.package` to `config.boot.kernelPackages.nvidiaPackages.beta` fore some reason it defaulted to `pkgs.mesa.driver` even thought I am running the proprietary nvidia drivers.

My config now:

```auto
{ config, ... }:

let
  driverPkg = config.boot.kernelPackages.nvidiaPackages.beta;
in
{
  services.xserver.videoDrivers = ["nvidia"];
  boot.kernelParams = ["nvidia.NVreg_PreserveVideoMemoryAllocations=1"];
  hardware.nvidia = {
    modesetting.enable = true;
    powerManagement.enable = true;
    powerManagement.finegrained = false;
    open = false;
    nvidiaSettings = false;
    package = driverPkg;
  };
  hardware.opengl = {
    enable = true;
    driSupport = false;
    package = driverPkg;
  };
  nixpkgs.config.allowUnfree = true;
  nixpkgs.config.nvidia.acceptLicense = true;
}

```

---

<div class="post-metadata">

### Author: ![timon-schelling](https://discourse.nixos.org/user_avatar/discourse.nixos.org/timon-schelling/32/17037_2.png) [@timon-schelling](https://discourse.nixos.org/u/timon-schelling)
#### Post date: [April 13, 2024, 3:08pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/3 "2024-04-13T15:08:43Z")

</div>

Am I expected to manually set `hardware.opengl.package`, I thought the nvidia hardware module should take care of that.

---

<div class="post-metadata">

### Author: ![aidalgol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/aidalgol/32/7174_2.png) [@aidalgol](https://discourse.nixos.org/u/aidalgol)
#### Post date: [May 4, 2024, 4:48am UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/4 "2024-05-04T04:48:13Z")

</div>

I think that message just means the ICD loader tried the NVK driver before trying the proprietary driver, and it’s safe to ignore. To actually silence it, you can set the environment variable `VK_DRIVER_FILES`. I have this in my NixOS config:

```nix
  environment.sessionVariables.VK_DRIVER_FILES = "/run/opengl-driver/share/vulkan/icd.d/nvidia_icd.x86_64.json";

```

If you also have integrated graphics (such as on a laptop), you will want to set that to a colon-separated list of all the driver files for your GPUs, otherwise Vulkan will never work on your other GPU(s).

---

<div class="post-metadata">

### Author: ![Sandro](https://discourse.nixos.org/user_avatar/discourse.nixos.org/sandro/32/2865_2.png) [@Sandro](https://discourse.nixos.org/u/Sandro)
#### Post date: [June 5, 2024, 7:16pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/5 "2024-06-05T19:16:53Z")

</div>

> [@aidalgol](#):
>
> ` environment.sessionVariables.VK_DRIVER_FILES = "/run/opengl-driver/share/vulkan/icd.d/nvidia_icd.x86_64.json";`

Should we set this by default?

---

<div class="post-metadata">

### Author: ![aidalgol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/aidalgol/32/7174_2.png) [@aidalgol](https://discourse.nixos.org/u/aidalgol)
#### Post date: [June 5, 2024, 7:36pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/6 "2024-06-05T19:36:29Z")

</div>

I think it would be better to not create symlinks in `/run/opengl-driver/share/vulkan/icd.d/` for drivers that are not actually configured. On my system for example, I only have an nvidia GPU, and I have only anything in my NixOS configuration for nvidia drivers, but this folder contains an ICD file for just about every Vulkan-capable GPU vendor.

```plaintext
dzn_icd.x86_64.json
intel_hasvk_icd.x86_64.json
nouveau_icd.x86_64.json
lvp_icd.x86_64.json
intel_icd.x86_64.json
virtio_icd.x86_64.json
nvidia_icd.x86_64.json
radeon_icd.x86_64.json

```

---

<div class="post-metadata">

### Author: ![Sandro](https://discourse.nixos.org/user_avatar/discourse.nixos.org/sandro/32/2865_2.png) [@Sandro](https://discourse.nixos.org/u/Sandro)
#### Post date: [June 5, 2024, 7:59pm UTC](https://discourse.nixos.org/t/nvk-error-when-using-prop-nvidia-drivers/43300/7 "2024-06-05T19:59:56Z")

</div>

I don’ think we have support for that. Either we link all of mesa or nothing. How about a hardware.opengl.vendor or so setting, that would filter that? Feel free to hit me up in chat or ping me for review or ideas.
