Nvidia: Difference between revisions
Artoria2e5 (talk | contribs) No edit summary |
m fixed link to „Unfree software“ (capitalization) |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 7: | Line 7: | ||
This article aims to explain how to use all three of the non-default drivers, and how to disable the Nvidia GPU if you don't want it to make heat. | This article aims to explain how to use all three of the non-default drivers, and how to disable the Nvidia GPU if you don't want it to make heat. | ||
(A GPU driver is not ''purely'' kernel-mode; there are also userspace parts that allow the graphics API to use the kernel part. Mesa, for example, has | (A GPU driver is not ''purely'' kernel-mode; there are also userspace parts that allow the graphics API to use the kernel part. Mesa, for example, has userspace parts for Nouveau and NVK; they are automatically used when appropriate, so no configuration is needed.<ref>If you insist on checking which driver is in use, try running <code>vulkaninfo | grep -i "deviceName\|driverID"</code>. If you see DRIVER_ID_MESA_NVK, that means you are on the shiny new open-source Vulkan driver.</ref> Nvidia's two kernel drivers also need to be hooked up using userspace libraries provided by Nvidia.) | ||
= The proprietary driver = | = The proprietary driver = | ||
Line 16: | Line 16: | ||
* [https://nixos.org/manual/nixos/unstable/#sec-x11-graphics-cards-nvidia Nvidia section] in the NixOS Manual offers a shorter guide. | * [https://nixos.org/manual/nixos/unstable/#sec-x11-graphics-cards-nvidia Nvidia section] in the NixOS Manual offers a shorter guide. | ||
* Basic installation is as simple as <code>services.xserver.videoDrivers = [ "nvidia" ];</code> (once you have unfree software enabled), which causes the default stable version to be pulled in. | * Basic installation is as simple as <code>services.xserver.videoDrivers = [ "nvidia" ];</code> (once you have unfree software enabled), which causes the default stable version to be pulled in. | ||
* Older cards may need an older driver; see [[#Determining the correct driver version]], which describes <code>hardware.nvidia.package</code>. | * Older cards may need an older driver; see [[#Determining the correct driver version|Determining the correct driver version]], which describes <code>hardware.nvidia.package</code>. | ||
* [[#Modifying the NixOS Configuration]] puts it all together and shows the other <code>hardware.nvidia</code> settings, some irrelevant to this driver (e.g. <code>hardware.nvidia.open</code>, which takes you to the Nvidia open kernel driver.) | * [[Nvidia#Modifying NixOS configuration|Modifying the NixOS Configuration]] puts it all together and shows the other <code>hardware.nvidia</code> settings, some irrelevant to this driver (e.g. <code>hardware.nvidia.open</code>, which takes you to the Nvidia open kernel driver.) | ||
== Enable unfree software repositories == | == Enable unfree software repositories == | ||
Make sure to allow [[Unfree | Make sure to allow [[Unfree software|unfree software]]. The unfree NVIDIA packages include <code>nvidia-x11</code>, <code>nvidia-settings</code>, and <code>nvidia-persistenced</code>. | ||
== Modifying NixOS configuration == | == Modifying NixOS configuration == | ||
Line 34: | Line 33: | ||
{ | { | ||
# Enable | # Enable graphics driver in NixOS unstable/NixOS 24.11 | ||
hardware.opengl = { | hardware.graphics.enable = true; | ||
# The same as above but for NixOS 23.11 | |||
#hardware.opengl = { | |||
# enable = true; | |||
}; | # driSupport = true; | ||
#}; | |||
# Load "nvidia" driver for Xorg and Wayland | # Load "nvidia" driver for Xorg and Wayland | ||
Line 81: | Line 81: | ||
=== Determining the correct driver version === | === Determining the correct driver version === | ||
You might need to determine the appropriate driver version for your card. | You might need to determine the appropriate driver version for your card. Some of the options available are: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; # (390 on i686, else production) | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta; | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta; # (555) | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production; # (installs 550) | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production; # (installs 550) | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.vulkan_beta; | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.vulkan_beta; # (550, but different) | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470; | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470; | ||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_390; | hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_390; | ||
Line 93: | Line 93: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Out of the above, | Out of the above, <code>stable</code> and <code>beta</code> will work for the latest RTX cards and some lower cards so long as they're not considered "legacy" by Nvidia. For "legacy" cards, you can consult the [https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ Nvidia official legacy driver list] and check whether your device is supported by the 470, 390 or 340 branches. If so, you can use the corresponding <code>legacy_470</code>, <code>legacy_390</code> or <code>legacy_340</code> driver. For a full list of options, consult the [https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/os-specific/linux/nvidia-x11/default.nix nvidia-x11 module repository]. | ||
{{note|As of early March 2024 the <code>production</code> driver has been updated from <code>535</code> to <code>550</code>. This is a breaking change for some people, especially those on Wayland. | {{note|As of early March 2024 the <code>production</code> driver has been updated from <code>535</code> to <code>550</code>. This is a breaking change for some people, especially those on Wayland. | ||
Line 302: | Line 302: | ||
{ | { | ||
# Enable graphics driver in NixOS unstable/NixOS 24.11 | |||
hardware.graphics.enable = true; | |||
# The same as above but for NixOS 23.11 | |||
#hardware.opengl = { | |||
# enable = true; | |||
# driSupport = true; | |||
#}; | |||
# Load nvidia driver for Xorg and Wayland | |||
# Load nvidia driver for Xorg and Wayland | |||
services.xserver.videoDrivers = ["nvidia"]; | services.xserver.videoDrivers = ["nvidia"]; | ||