From a22acd6a9eddd5ee643a0a66b871e1aa9a299233 Mon Sep 17 00:00:00 2001 From: NullBite Date: Thu, 28 Dec 2023 00:57:41 -0500 Subject: [PATCH] Move NVIDIA OPTIMUS config into fragment --- hosts/slab/configuration.nix | 42 ++------------------------------ hosts/slab/nvidia-optimus.nix | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 hosts/slab/nvidia-optimus.nix diff --git a/hosts/slab/configuration.nix b/hosts/slab/configuration.nix index d7fab9f..02a6fff 100644 --- a/hosts/slab/configuration.nix +++ b/hosts/slab/configuration.nix @@ -43,8 +43,6 @@ }; }; - services.supergfxd.enable = true; - # Enable OpenGL hardware.opengl = { enable = true; @@ -52,45 +50,9 @@ driSupport32Bit = true; }; - # Load nvidia driver for Xorg and Wayland - services.xserver.videoDrivers = ["amdgpu" "nvidia"]; + services.supergfxd.enable = true; - hardware.nvidia = { - - # Modesetting is required. - modesetting.enable = false; - - # Nvidia power management. Experimental, and can cause sleep/suspend to fail. - powerManagement.enable = false; - # Fine-grained power management. Turns off GPU when not in use. - # Experimental and only works on modern Nvidia GPUs (Turing or newer). - powerManagement.finegrained = false; - - # Use the NVidia open source kernel module (not to be confused with the - # independent third-party "nouveau" open source driver). - # Support is limited to the Turing and later architectures. Full list of - # supported GPUs is at: - # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus - # Only available from driver 515.43.04+ - # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = false; - - # Enable the Nvidia settings menu, - # accessible via `nvidia-settings`. - nvidiaSettings = true; - - # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; - - prime = { - offload = { - enable = true; - enableOffloadCmd = true; - }; - amdgpuBusId = "PCI:07:00:0"; - nvidiaBusId = "PCI:01:00:0"; - }; - }; + services.xserver.videoDrivers = ["amdgpu"]; services.syncthing = { enable = true; diff --git a/hosts/slab/nvidia-optimus.nix b/hosts/slab/nvidia-optimus.nix new file mode 100644 index 0000000..3b74772 --- /dev/null +++ b/hosts/slab/nvidia-optimus.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +{ + services.supergfxd.enable = true; + + # Load nvidia driver for Xorg and Wayland + services.xserver.videoDrivers = ["amdgpu" "nvidia"]; + + hardware.nvidia = { + + # Modesetting is required. + modesetting.enable = false; + + # Nvidia power management. Experimental, and can cause sleep/suspend to fail. + powerManagement.enable = false; + # Fine-grained power management. Turns off GPU when not in use. + # Experimental and only works on modern Nvidia GPUs (Turing or newer). + powerManagement.finegrained = false; + + # Use the NVidia open source kernel module (not to be confused with the + # independent third-party "nouveau" open source driver). + # Support is limited to the Turing and later architectures. Full list of + # supported GPUs is at: + # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus + # Only available from driver 515.43.04+ + # Currently alpha-quality/buggy, so false is currently the recommended setting. + open = false; + + # Enable the Nvidia settings menu, + # accessible via `nvidia-settings`. + nvidiaSettings = true; + + # Optionally, you may need to select the appropriate driver version for your specific GPU. + package = config.boot.kernelPackages.nvidiaPackages.stable; + + prime = { + offload = { + enable = true; + enableOffloadCmd = true; + }; + amdgpuBusId = "PCI:07:00:0"; + nvidiaBusId = "PCI:01:00:0"; + }; + }; +} +