{ config, lib, ... }: let
inherit (lib) mkIf enabled;
in mkIf config.isDesktopNotWsl {
# Enable OpenGL and hardware acceleration.
hardware.graphics = enabled {
enable32Bit = true; # Required for Steam and 32-bit applications.
};
# For Wayland.
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
# Enable modesetting (required for Wayland).
modesetting.enable = true;
powerManagement.finegrained = false;
# Use open source kernel modules (recommended for RTX/GTX 16xx+).
open = true;
# Enable nvidia-settings menu.
nvidiaSettings = true;
};
# Environment variables for NVIDIA on Wayland.
environment.sessionVariables = {
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
WLR_NO_HARDWARE_CURSORS = "1"; # Cursor fix.
};
boot.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
}
package = config.boot.kernelPackages.nvidiaPackages.beta;
# For sleep handling.
powerManagement.enable = true;