From d7be077d2358513705cd5300063e21c849a4b116 Mon Sep 17 00:00:00 2001 From: osbm Date: Tue, 28 Oct 2025 17:09:12 +0300 Subject: [PATCH] nvidia options update --- README.md | 2 +- hosts/nixos/ymir/configuration.nix | 56 ++---------------------------- modules/nixos/hardware/nvidia.nix | 40 ++++++++++++++++----- modules/nixos/options.nix | 2 +- 4 files changed, 36 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 26e72c5..e654d52 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ osbmModules = { }; hardware = { sound.enable = true; - nvidiaDriver.enable = false; + nvidia.enable = false; hibernation.enable = false; disko = { enable = true; diff --git a/hosts/nixos/ymir/configuration.nix b/hosts/nixos/ymir/configuration.nix index 3620632..bec494a 100644 --- a/hosts/nixos/ymir/configuration.nix +++ b/hosts/nixos/ymir/configuration.nix @@ -1,8 +1,3 @@ -{ - config, - pkgs, - ... -}: { imports = [ ./hardware-configuration.nix @@ -18,6 +13,7 @@ hibernation.enable = false; wakeOnLan.enable = true; sound.enable = true; + nvidia.enable = true; }; services = { jellyfin.enable = true; @@ -36,55 +32,7 @@ # Enable networking networking.networkmanager.enable = true; - hardware.nvidia-container-toolkit.enable = true; - - # Enable OpenGL - programs.nix-required-mounts.enable = true; - programs.nix-required-mounts.presets.nvidia-gpu.enable = true; - - hardware.graphics = { - enable = true; - }; - virtualisation.waydroid.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+ - # 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.beta; - }; - - environment.systemPackages = with pkgs; [ - nvidia-container-toolkit - ]; - - system.stateVersion = "25.05"; # great taboo of the nixos world + system.stateVersion = "25.05"; # changing this is a great taboo of the nixos world } diff --git a/modules/nixos/hardware/nvidia.nix b/modules/nixos/hardware/nvidia.nix index e010ea8..f3b992b 100644 --- a/modules/nixos/hardware/nvidia.nix +++ b/modules/nixos/hardware/nvidia.nix @@ -1,6 +1,6 @@ -{ lib, config, ... }: +{ lib, config, pkgs, ... }: { - config = lib.mkIf config.osbmModules.hardware.nvidiaDriver.enable { + config = lib.mkIf config.osbmModules.hardware.nvidia.enable { # Enable OpenGL hardware.graphics = { enable = true; @@ -10,21 +10,45 @@ services.xserver.videoDrivers = [ "nvidia" ]; hardware.nvidia = { - # Modesetting is required + # Modesetting is required. modesetting.enable = true; - # Nvidia power management + # 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 open source kernel module + # 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 + # Enable the Nvidia settings menu, + # accessible via `nvidia-settings` nvidiaSettings = true; - # Select appropriate driver version - package = config.boot.kernelPackages.nvidiaPackages.stable; + # Optionally, you may need to select the appropriate driver version for your specific GPU. + package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + + environment.systemPackages = [ + pkgs.nvidia-container-toolkit + ]; + + + # TODO explain why this is needed + programs.nix-required-mounts = { + enable = true; + presets.nvidia-gpu.enable = true; }; # Enable nvidia-container-toolkit if virtualization is enabled diff --git a/modules/nixos/options.nix b/modules/nixos/options.nix index 0c25029..d618394 100644 --- a/modules/nixos/options.nix +++ b/modules/nixos/options.nix @@ -175,7 +175,7 @@ }; }; - nvidiaDriver = { + nvidia = { enable = lib.mkOption { type = lib.types.bool; default = false;