diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index a9fa47f..ea6a53e 100644 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -33,6 +33,7 @@ bluetooth.enable = false; firewall.enable = true; locale.enable = true; + nvidia.enable = true; }; }; diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index f72af71..3efde9a 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -33,6 +33,7 @@ bluetooth.enable = true; firewall.enable = true; locale.enable = true; + nvidia.enable = false; }; }; diff --git a/hosts/surface/default.nix b/hosts/surface/default.nix index f0ee371..574c1e0 100644 --- a/hosts/surface/default.nix +++ b/hosts/surface/default.nix @@ -33,6 +33,7 @@ bluetooth.enable = true; firewall.enable = true; locale.enable = true; + nvidia.enable = false; }; }; diff --git a/modules/system/hardware/nvidia.nix b/modules/system/hardware/nvidia.nix index 9956bb6..eb1004c 100644 --- a/modules/system/hardware/nvidia.nix +++ b/modules/system/hardware/nvidia.nix @@ -1,46 +1,32 @@ -{ config, lib, pkgs, nixpkgs, ... }: +{ config, lib, ... }: -{ - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - "nvidia-x11" - "nvidia-settings" - ]; +with lib; - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; +let + cfg = config.settings.hardware.nvidia; +in { + options = { + settings.hardware.firewall.enable = lib.mkOption { + type = lib.types.bool; + description = '' + Enable nvidia drivers + ''; + }; }; - services.xserver.videoDrivers = ["nvidia"]; # or "nvidiaLegacy470 etc. + config = mkIf cfg.enable { + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "nvidia-x11" + "nvidia-settings" + ]; - hardware.nvidia = { + hardware.graphics.enable = true; - modesetting.enable = true; + services.xserver.videoDrivers = ["nvidia"]; # or "nvidiaLegacy470 etc. - 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; - nvidiaSettings = true; - - package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - version = "555.58.02"; - sha256_64bit = "sha256-xctt4TPRlOJ6r5S54h5W6PT6/3Zy2R4ASNFPu8TSHKM="; - sha256_aarch64 = "sha256-xctt4TPRlOJ6r5S54h5W6PT6/3Zy2R4ASNFPu8TSHKM="; - openSha256 = "sha256-ZpuVZybW6CFN/gz9rx+UJvQ715FZnAOYfHn5jt5Z2C8="; - settingsSha256 = "sha256-ZpuVZybW6CFN/gz9rx+UJvQ715FZnAOYfHn5jt5Z2C8="; - persistencedSha256 = lib.fakeSha256; + hardware.nvidia = { + open = true; + package = config.boot.kernelPackages.nvidiaPackages.beta; }; }; }