Files
nixos-config/host/modules/gpu/nvidia.nix
T

62 lines
1.6 KiB
Nix
Raw Normal View History

2026-04-21 17:48:52 +03:00
{ config, pkgs-stable, lib, ... }: let
primeCfg = config.host.nvidia.prime;
isPrimeOffload = primeCfg.enable;
in {
boot = {
kernelParams = [ "nvidia-drm.modeset=1" ];
initrd.kernelModules = lib.optionals isPrimeOffload [ "i915" ];
};
services.xserver.videoDrivers =
if isPrimeOffload
then [ "modesetting" "nvidia" ]
else [ "nvidia" ];
2025-09-29 17:50:36 +03:00
2025-02-02 14:57:36 +03:00
hardware = {
graphics = {
enable = true;
enable32Bit = true;
2025-12-01 23:19:06 +03:00
extraPackages = with pkgs-stable; [
2026-01-01 01:23:52 +03:00
# nvidia-vaapi-driver
2025-09-29 17:50:36 +03:00
intel-media-driver
libvdpau-va-gl
];
2026-04-21 17:48:52 +03:00
extraPackages32 = with pkgs-stable.pkgsi686Linux; [ nvidia-vaapi-driver intel-media-driver ];
2025-02-02 14:57:36 +03:00
};
nvidia = {
modesetting.enable = true;
powerManagement = {
enable = true;
finegrained = false;
};
open = false;
nvidiaSettings = true;
2025-05-05 14:58:11 +03:00
package = config.boot.kernelPackages.nvidiaPackages.stable;
2025-02-02 14:57:36 +03:00
2026-04-21 17:48:52 +03:00
prime = lib.optionalAttrs isPrimeOffload {
offload = {
enable = true;
enableOffloadCmd = true;
};
intelBusId = primeCfg.intelBusId;
nvidiaBusId = primeCfg.nvidiaBusId;
2025-02-02 14:57:36 +03:00
};
};
};
2025-09-29 17:50:36 +03:00
environment.sessionVariables = {
2026-04-21 17:48:52 +03:00
__GL_VRR_ALLOWED = 1;
ELECTRON_OZONE_PLATFORM_HINT = "auto";
NIXOS_OZONE_WL = 1;
} // lib.optionalAttrs isPrimeOffload {
LIBVA_DRIVER_NAME = "iHD";
} // lib.optionalAttrs (!isPrimeOffload) {
2025-09-29 17:50:36 +03:00
WLR_NO_HARDWARE_CURSORS = 1;
WLR_DRM_NO_ATOMIC = 1;
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
};
2025-02-02 14:57:36 +03:00
}