{ lib, config, pkgs, namespace, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.${namespace}.system.hardware.gpu.nvidia; in { options.${namespace}.system.hardware.gpu.nvidia = { enable = mkEnableOption "Enable Nvidia GPU"; }; config = mkIf cfg.enable { hardware.graphics = { enable = true; enable32Bit = true; extraPackages = [ pkgs.nvidia-vaapi-driver ]; }; hardware.nvidia = { modesetting.enable = true; powerManagement.enable = true; open = false; nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.latest; # stable, beta }; services.xserver.videoDrivers = [ "nvidia" ]; boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" "nvidia_drm.fbdev=1" ]; environment.sessionVariables = { GBM_BACKEND = "nvidia-drm"; __GLX_VENDOR_LIBRARY_NAME = "nvidia"; LIBVA_DRIVER_NAME = "nvidia"; NVD_BACKEND = "direct"; }; }; }