From 7e60458d8646f79a5df228913f87f59cc14414da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sun, 13 Nov 2022 01:32:01 +0000 Subject: [PATCH 1/2] common/gpu/nvidia*: Migrate to common/gpu/nvidia/* and add non-prime Fixes #338 --- common/gpu/nvidia-disable.nix | 14 ++++++++------ common/gpu/nvidia.nix | 28 +++++++--------------------- common/gpu/nvidia/default.nix | 8 ++++++++ common/gpu/nvidia/disable.nix | 9 +++++++++ common/gpu/nvidia/prime.nix | 22 ++++++++++++++++++++++ flake.nix | 5 +++-- 6 files changed, 57 insertions(+), 29 deletions(-) create mode 100644 common/gpu/nvidia/default.nix create mode 100644 common/gpu/nvidia/disable.nix create mode 100644 common/gpu/nvidia/prime.nix diff --git a/common/gpu/nvidia-disable.nix b/common/gpu/nvidia-disable.nix index c6516af..3f28c4e 100644 --- a/common/gpu/nvidia-disable.nix +++ b/common/gpu/nvidia-disable.nix @@ -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 module has been deprecated. + + Switch to using instead. + '' + ]; } diff --git a/common/gpu/nvidia.nix b/common/gpu/nvidia.nix index dffeb2a..9443b06 100644 --- a/common/gpu/nvidia.nix +++ b/common/gpu/nvidia.nix @@ -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 module has been deprecated. - hardware.opengl.extraPackages = with pkgs; [ - vaapiVdpau + Switch to using instead if you use prime offloading. + If you are using this without prime, consider switching to instead. + '' ]; } diff --git a/common/gpu/nvidia/default.nix b/common/gpu/nvidia/default.nix new file mode 100644 index 0000000..47f2d34 --- /dev/null +++ b/common/gpu/nvidia/default.nix @@ -0,0 +1,8 @@ +{ lib, pkgs, ... }: + +{ + services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ]; + hardware.opengl.extraPackages = with pkgs; [ + vaapiVdpau + ]; +} diff --git a/common/gpu/nvidia/disable.nix b/common/gpu/nvidia/disable.nix new file mode 100644 index 0000000..c6516af --- /dev/null +++ b/common/gpu/nvidia/disable.nix @@ -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" ]; +} diff --git a/common/gpu/nvidia/prime.nix b/common/gpu/nvidia/prime.nix new file mode 100644 index 0000000..79cf9fd --- /dev/null +++ b/common/gpu/nvidia/prime.nix @@ -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 + }; +} diff --git a/flake.nix b/flake.nix index 238d2d7..c18d993 100644 --- a/flake.nix +++ b/flake.nix @@ -157,8 +157,9 @@ common-gpu-amd-sea-islands = import ./common/gpu/amd/sea-islands; common-gpu-amd-southern-islands = import ./common/gpu/amd/southern-islands; common-gpu-intel = import ./common/gpu/intel.nix; - common-gpu-nvidia = import ./common/gpu/nvidia.nix; - common-gpu-nvidia-disable = import ./common/gpu/nvidia-disable.nix; + common-gpu-nvidia = import ./common/gpu/nvidia/prime.nix; + common-gpu-nvidia-nonprime = import ./common/gpu/nvidia; + common-gpu-nvidia-disable = import ./common/gpu/nvidia/disable.nix; common-pc = import ./common/pc; common-pc-hdd = import ./common/pc/hdd; common-pc-laptop = import ./common/pc/laptop; From cdd049a353645cbeaba48cb9e339123b9aeae743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sun, 13 Nov 2022 01:54:59 +0000 Subject: [PATCH 2/2] treewide: Migrate to new nvidia modules --- asus/rog-strix/g733qs/default.nix | 2 +- asus/zephyrus/ga401/default.nix | 2 +- asus/zephyrus/ga503/default.nix | 2 +- dell/g3/3779/default.nix | 2 +- dell/xps/15-9500/nvidia/default.nix | 2 +- dell/xps/15-9550/default.nix | 2 +- dell/xps/15-9550/nvidia/default.nix | 2 +- dell/xps/15-9560/intel/default.nix | 2 +- dell/xps/15-9560/nvidia/default.nix | 2 +- dell/xps/17-9700/intel/default.nix | 2 +- dell/xps/17-9700/nvidia/default.nix | 2 +- lenovo/ideapad/15arh05/default.nix | 2 +- lenovo/legion/15ach6/default.nix | 2 +- lenovo/legion/15arh05h/default.nix | 2 +- lenovo/legion/16ithg6/default.nix | 2 +- lenovo/thinkpad/e470/default.nix | 2 +- lenovo/thinkpad/p1/default.nix | 2 +- lenovo/thinkpad/p50/default.nix | 2 +- lenovo/thinkpad/p51/default.nix | 2 +- lenovo/thinkpad/p52/default.nix | 2 +- msi/gl62/default.nix | 2 +- omen/en00015p/default.nix | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/asus/rog-strix/g733qs/default.nix b/asus/rog-strix/g733qs/default.nix index 8e5fde1..b49a44c 100644 --- a/asus/rog-strix/g733qs/default.nix +++ b/asus/rog-strix/g733qs/default.nix @@ -2,7 +2,7 @@ { imports = [ ../../../common/cpu/amd/pstate.nix - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/ssd ../../battery.nix diff --git a/asus/zephyrus/ga401/default.nix b/asus/zephyrus/ga401/default.nix index 9148e1d..2130ca7 100644 --- a/asus/zephyrus/ga401/default.nix +++ b/asus/zephyrus/ga401/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/amd - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/ssd ]; diff --git a/asus/zephyrus/ga503/default.nix b/asus/zephyrus/ga503/default.nix index 5597c81..94e8684 100644 --- a/asus/zephyrus/ga503/default.nix +++ b/asus/zephyrus/ga503/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/amd - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/ssd ]; diff --git a/dell/g3/3779/default.nix b/dell/g3/3779/default.nix index 8c9b3d3..80deb29 100644 --- a/dell/g3/3779/default.nix +++ b/dell/g3/3779/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/intel - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/laptop/ssd ]; diff --git a/dell/xps/15-9500/nvidia/default.nix b/dell/xps/15-9500/nvidia/default.nix index 451b6eb..f2fa3ae 100644 --- a/dell/xps/15-9500/nvidia/default.nix +++ b/dell/xps/15-9500/nvidia/default.nix @@ -2,7 +2,7 @@ { imports = [ ../default.nix - ../../../../common/gpu/nvidia.nix + ../../../../common/gpu/nvidia/prime.nix ]; hardware.nvidia.prime = { diff --git a/dell/xps/15-9550/default.nix b/dell/xps/15-9550/default.nix index 0fdfeee..2150a98 100644 --- a/dell/xps/15-9550/default.nix +++ b/dell/xps/15-9550/default.nix @@ -5,7 +5,7 @@ ../../../common/cpu/intel ../../../common/pc/laptop # To just use Intel integrated graphics with Intel's open source driver - # ../../../common/gpu/nvidia-disable + # ../../../common/gpu/nvidia/disable.nix ]; # TODO: boot loader diff --git a/dell/xps/15-9550/nvidia/default.nix b/dell/xps/15-9550/nvidia/default.nix index 451b6eb..f2fa3ae 100644 --- a/dell/xps/15-9550/nvidia/default.nix +++ b/dell/xps/15-9550/nvidia/default.nix @@ -2,7 +2,7 @@ { imports = [ ../default.nix - ../../../../common/gpu/nvidia.nix + ../../../../common/gpu/nvidia/prime.nix ]; hardware.nvidia.prime = { diff --git a/dell/xps/15-9560/intel/default.nix b/dell/xps/15-9560/intel/default.nix index 7c8eadd..a453149 100644 --- a/dell/xps/15-9560/intel/default.nix +++ b/dell/xps/15-9560/intel/default.nix @@ -4,7 +4,7 @@ imports = [ ../../../../common/cpu/intel ../../../../common/pc/laptop - ../../../../common/gpu/nvidia-disable.nix + ../../../../common/gpu/nvidia/disable.nix ../xps-common.nix ]; } diff --git a/dell/xps/15-9560/nvidia/default.nix b/dell/xps/15-9560/nvidia/default.nix index a7ba241..3e78eba 100644 --- a/dell/xps/15-9560/nvidia/default.nix +++ b/dell/xps/15-9560/nvidia/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../../common/cpu/intel - ../../../../common/gpu/nvidia.nix + ../../../../common/gpu/nvidia/prime.nix ../../../../common/pc/laptop ../xps-common.nix ]; diff --git a/dell/xps/17-9700/intel/default.nix b/dell/xps/17-9700/intel/default.nix index 4a9a168..0176bfd 100644 --- a/dell/xps/17-9700/intel/default.nix +++ b/dell/xps/17-9700/intel/default.nix @@ -4,7 +4,7 @@ imports = [ ../../../../common/cpu/intel ../../../../common/pc/laptop - ../../../../common/gpu/nvidia-disable.nix + ../../../../common/gpu/nvidia/disable.nix ../common.nix ]; } diff --git a/dell/xps/17-9700/nvidia/default.nix b/dell/xps/17-9700/nvidia/default.nix index 8002870..7e1e3e1 100644 --- a/dell/xps/17-9700/nvidia/default.nix +++ b/dell/xps/17-9700/nvidia/default.nix @@ -4,7 +4,7 @@ imports = [ ../../../../common/cpu/intel ../../../../common/pc/laptop - ../../../../common/gpu/nvidia.nix + ../../../../common/gpu/nvidia/prime.nix ../common.nix ]; diff --git a/lenovo/ideapad/15arh05/default.nix b/lenovo/ideapad/15arh05/default.nix index 9914544..fda5cd0 100644 --- a/lenovo/ideapad/15arh05/default.nix +++ b/lenovo/ideapad/15arh05/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/amd - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/laptop/acpi_call.nix ../../../common/pc/laptop/ssd diff --git a/lenovo/legion/15ach6/default.nix b/lenovo/legion/15ach6/default.nix index 0c71823..0cbc0f4 100644 --- a/lenovo/legion/15ach6/default.nix +++ b/lenovo/legion/15ach6/default.nix @@ -4,7 +4,7 @@ in { imports = [ ../../../common/cpu/amd ../../../common/gpu/amd - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/laptop/ssd ]; diff --git a/lenovo/legion/15arh05h/default.nix b/lenovo/legion/15arh05h/default.nix index 1662748..603fd9e 100644 --- a/lenovo/legion/15arh05h/default.nix +++ b/lenovo/legion/15arh05h/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/amd - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/laptop/ssd ]; diff --git a/lenovo/legion/16ithg6/default.nix b/lenovo/legion/16ithg6/default.nix index e63c165..cf0244e 100644 --- a/lenovo/legion/16ithg6/default.nix +++ b/lenovo/legion/16ithg6/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../../common/cpu/intel - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop ../../../common/pc/laptop/ssd ]; diff --git a/lenovo/thinkpad/e470/default.nix b/lenovo/thinkpad/e470/default.nix index c9bf833..e9c5214 100644 --- a/lenovo/thinkpad/e470/default.nix +++ b/lenovo/thinkpad/e470/default.nix @@ -4,7 +4,7 @@ imports = [ ../. ../../../common/cpu/intel/kaby-lake - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ]; hardware.nvidia.prime = { diff --git a/lenovo/thinkpad/p1/default.nix b/lenovo/thinkpad/p1/default.nix index 3575693..4c68bdb 100644 --- a/lenovo/thinkpad/p1/default.nix +++ b/lenovo/thinkpad/p1/default.nix @@ -3,7 +3,7 @@ ../../../common/cpu/intel # might need nvidia module but we don't know the PCI ids: # https://github.com/NixOS/nixos-hardware/pull/274#discussion_r650483740 - #../../../common/gpu/nvidia.nix + #../../../common/gpu/nvidia/prime.nix ../../../common/pc/laptop/acpi_call.nix ../../../common/pc/laptop/ssd ]; diff --git a/lenovo/thinkpad/p50/default.nix b/lenovo/thinkpad/p50/default.nix index 48cf605..3e77eb5 100644 --- a/lenovo/thinkpad/p50/default.nix +++ b/lenovo/thinkpad/p50/default.nix @@ -1,6 +1,6 @@ { lib, config, ... }: { imports = [ - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/cpu/intel ../../../common/pc/laptop/acpi_call.nix ../. diff --git a/lenovo/thinkpad/p51/default.nix b/lenovo/thinkpad/p51/default.nix index 5701c85..4c9be3c 100644 --- a/lenovo/thinkpad/p51/default.nix +++ b/lenovo/thinkpad/p51/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { imports = [ - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/cpu/intel ../../../common/cpu/intel/kaby-lake ../../../common/pc/laptop/acpi_call.nix diff --git a/lenovo/thinkpad/p52/default.nix b/lenovo/thinkpad/p52/default.nix index dc0d99b..31c9294 100644 --- a/lenovo/thinkpad/p52/default.nix +++ b/lenovo/thinkpad/p52/default.nix @@ -1,6 +1,6 @@ { lib, config, ... }: { imports = [ - ../../../common/gpu/nvidia.nix + ../../../common/gpu/nvidia/prime.nix ../../../common/cpu/intel ../../../common/pc/laptop/acpi_call.nix ../. diff --git a/msi/gl62/default.nix b/msi/gl62/default.nix index afba735..6f3f91c 100644 --- a/msi/gl62/default.nix +++ b/msi/gl62/default.nix @@ -4,7 +4,7 @@ imports = [ ../../common/pc/laptop/ssd ../../common/cpu/intel - ../../common/gpu/nvidia.nix + ../../common/gpu/nvidia/prime.nix ../../common/pc/laptop ]; diff --git a/omen/en00015p/default.nix b/omen/en00015p/default.nix index 8a97003..78e1c3d 100644 --- a/omen/en00015p/default.nix +++ b/omen/en00015p/default.nix @@ -3,7 +3,7 @@ { imports = [ ../../common/cpu/amd - ../../common/gpu/nvidia.nix + ../../common/gpu/nvidia/prime.nix ../../common/pc/laptop ../../common/pc/ssd ];