mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 09:17:14 +08:00 
			
		
		
		
	common/gpu/nvidia*: Migrate to common/gpu/nvidia/* and add non-prime
Fixes #338
This commit is contained in:
		@@ -1,9 +1,11 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  # This runs only intel/amdgpu igpus and nvidia dgpus do not drain power.
 | 
			
		||||
  imports = [ ./nvidia/disable.nix ];
 | 
			
		||||
 | 
			
		||||
  ##### disable nvidia, very nice battery life.
 | 
			
		||||
  hardware.nvidiaOptimus.disable = lib.mkDefault true;
 | 
			
		||||
  boot.blacklistedKernelModules = lib.mkDefault [ "nouveau" "nvidia" ];
 | 
			
		||||
  warnings = [
 | 
			
		||||
    ''
 | 
			
		||||
      DEPRECATED: The <nixos-hardware/common/gpu/nvidia-disable.nix> module has been deprecated.
 | 
			
		||||
 | 
			
		||||
      Switch to using <nixos-hardware/common/gpu/nvidia/disable.nix> instead.
 | 
			
		||||
    ''
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +1,12 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
# This creates a new 'nvidia-offload' program that runs the application passed to it on the GPU
 | 
			
		||||
# As per https://nixos.wiki/wiki/Nvidia
 | 
			
		||||
let
 | 
			
		||||
  nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
 | 
			
		||||
    export __NV_PRIME_RENDER_OFFLOAD=1
 | 
			
		||||
    export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
 | 
			
		||||
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
 | 
			
		||||
    export __VK_LAYER_NV_optimus=NVIDIA_only
 | 
			
		||||
    exec "$@"
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
 | 
			
		||||
  environment.systemPackages = [ nvidia-offload ];
 | 
			
		||||
  imports = [ ./nvidia/prime.nix ];
 | 
			
		||||
 | 
			
		||||
  hardware.nvidia.prime = {
 | 
			
		||||
    offload.enable = lib.mkDefault true;
 | 
			
		||||
    # Hardware should specify the bus ID for intel/nvidia devices
 | 
			
		||||
  };
 | 
			
		||||
  warnings = [
 | 
			
		||||
    ''
 | 
			
		||||
      DEPRECATED: The <nixos-hardware/common/gpu/nvidia.nix> module has been deprecated.
 | 
			
		||||
 | 
			
		||||
  hardware.opengl.extraPackages = with pkgs; [
 | 
			
		||||
    vaapiVdpau
 | 
			
		||||
      Switch to using <nixos-hardware/common/gpu/nvidia/prime.nix> instead if you use prime offloading.
 | 
			
		||||
      If you are using this without prime, consider switching to <nixos-hardware/common/gpu/nvidia> instead.
 | 
			
		||||
    ''
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								common/gpu/nvidia/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								common/gpu/nvidia/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
 | 
			
		||||
  hardware.opengl.extraPackages = with pkgs; [
 | 
			
		||||
    vaapiVdpau
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								common/gpu/nvidia/disable.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								common/gpu/nvidia/disable.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  # This runs only intel/amdgpu igpus and nvidia dgpus do not drain power.
 | 
			
		||||
 | 
			
		||||
  ##### disable nvidia, very nice battery life.
 | 
			
		||||
  hardware.nvidiaOptimus.disable = lib.mkDefault true;
 | 
			
		||||
  boot.blacklistedKernelModules = lib.mkDefault [ "nouveau" "nvidia" ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								common/gpu/nvidia/prime.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								common/gpu/nvidia/prime.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
# This creates a new 'nvidia-offload' program that runs the application passed to it on the GPU
 | 
			
		||||
# As per https://nixos.wiki/wiki/Nvidia
 | 
			
		||||
let
 | 
			
		||||
  nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
 | 
			
		||||
    export __NV_PRIME_RENDER_OFFLOAD=1
 | 
			
		||||
    export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
 | 
			
		||||
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
 | 
			
		||||
    export __VK_LAYER_NV_optimus=NVIDIA_only
 | 
			
		||||
    exec "$@"
 | 
			
		||||
  '';
 | 
			
		||||
in {
 | 
			
		||||
  imports = [ ./. ];
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = [ nvidia-offload ];
 | 
			
		||||
 | 
			
		||||
  hardware.nvidia.prime = {
 | 
			
		||||
    offload.enable = lib.mkDefault true;
 | 
			
		||||
    # Hardware should specify the bus ID for intel/nvidia devices
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user