47 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  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 = true;
 | 
						|
      nvidiaSettings = true;
 | 
						|
      package = config.boot.kernelPackages.nvidiaPackages.beta; # 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";
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |