62 lines
1.6 KiB
Nix
62 lines
1.6 KiB
Nix
{ 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" ];
|
|
|
|
hardware = {
|
|
graphics = {
|
|
enable = true;
|
|
enable32Bit = true;
|
|
extraPackages = with pkgs-stable; [
|
|
# nvidia-vaapi-driver
|
|
intel-media-driver
|
|
libvdpau-va-gl
|
|
];
|
|
extraPackages32 = with pkgs-stable.pkgsi686Linux; [ nvidia-vaapi-driver intel-media-driver ];
|
|
};
|
|
|
|
nvidia = {
|
|
modesetting.enable = true;
|
|
powerManagement = {
|
|
enable = true;
|
|
finegrained = false;
|
|
};
|
|
open = false;
|
|
nvidiaSettings = true;
|
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
|
|
prime = lib.optionalAttrs isPrimeOffload {
|
|
offload = {
|
|
enable = true;
|
|
enableOffloadCmd = true;
|
|
};
|
|
intelBusId = primeCfg.intelBusId;
|
|
nvidiaBusId = primeCfg.nvidiaBusId;
|
|
};
|
|
};
|
|
};
|
|
|
|
environment.sessionVariables = {
|
|
__GL_VRR_ALLOWED = 1;
|
|
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
|
NIXOS_OZONE_WL = 1;
|
|
} // lib.optionalAttrs isPrimeOffload {
|
|
LIBVA_DRIVER_NAME = "iHD";
|
|
} // lib.optionalAttrs (!isPrimeOffload) {
|
|
WLR_NO_HARDWARE_CURSORS = 1;
|
|
WLR_DRM_NO_ATOMIC = 1;
|
|
GBM_BACKEND = "nvidia-drm";
|
|
LIBVA_DRIVER_NAME = "nvidia";
|
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
|
};
|
|
}
|