diff --git a/machines/mibook/environments.nix b/machines/mibook/environments.nix index 3129b10..3ea5812 100644 --- a/machines/mibook/environments.nix +++ b/machines/mibook/environments.nix @@ -18,6 +18,7 @@ in my.hardware = { bluetooth.enable = true; sound.enable = false; + nvidia.enable = true; }; my.services = { vpn.enable = true; diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 464ae26..7c06857 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -9,6 +9,7 @@ #./firmware #./graphics #./keychron + ./nvidia #./yubikey ./sound #./thunderbolt diff --git a/modules/hardware/nvidia/default.nix b/modules/hardware/nvidia/default.nix new file mode 100644 index 0000000..b1f459b --- /dev/null +++ b/modules/hardware/nvidia/default.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.hardware.nvidia; +in +{ + options.my.hardware.nvidia = with lib; { + enable = mkEnableOption "NVIDIA GPU support"; + }; + + config = lib.mkIf cfg.enable { + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + # Load nvidia driver for Xorg and Wayland + services.xserver.videoDrivers = ["nvidia"]; + hardware.nvidia = { + + # Modesetting is required. + modesetting.enable = true; + + # Nvidia power management. Experimental, and can cause sleep/suspend to fail. + # Enable this if you have graphical corruption issues or application crashes after waking + # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead + # of just the bare essentials. + 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+ + 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; + }; + }; +}