{ config, lib, pkgs, ... }: { options.cady.nvidia.enable = lib.mkEnableOption "Nvidia Graphics Settings"; config = lib.mkIf config.cady.nvidia.enable { # Enable OpenGL hardware.graphics = { enable = true; # driSupport = true; # driSupport32Bit = true; }; # Load Nvidia driver for Xorg and Wayland services.xserver.videoDrivers = [ "nvidia" ]; # Seems like a good idea. hardware.enableAllFirmware = true; hardware.nvidia = { # Modesetting is required modesetting.enable = true; nvidiaPersistenced = true; # These options are all experimental and buggy. # See https://nixos.wiki/wiki/Nvidia for more info powerManagement = { enable = true; }; open = false; # Enable the Nvidia settings menu through nvidia-settings nvidiaSettings = true; # May need to switch to appropriate driver package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.stable; }; # Taken from https://github.com/tolgaerok/nixos-kde/blob/0a3541eb07c183a8c1979e024abe3bebcbfd8fe2/core%2Fgpu%2Fnvidia%2Fnvidia-stable-opengl%2Fdefault.nix boot.extraModprobeConfig = "options nvidia " + lib.concatStringsSep " " [ # nvidia assume that by default your CPU does not support PAT, # but this is effectively never the case in 2023 "NVreg_UsePageAttributeTable=1" # This may be a noop, but it's somewhat uncertain "NVreg_EnablePCIeGen3=1" # This is sometimes needed for ddc/ci support, see # https://www.ddcutil.com/nvidia/ # # Current monitor does not support it, but this is useful for # the future "NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100" # When (if!) I get another nvidia GPU, check for resizeable bar # settings ]; # Set environment variables related to NVIDIA graphics environment.variables = { # Required to run the correct GBM backend for nvidia GPUs on wayland GBM_BACKEND = "nvidia-drm"; # Apparently, without this nouveau may attempt to be used instead # (despite it being blacklisted) __GLX_VENDOR_LIBRARY_NAME = "nvidia"; # Hardware cursors are currently broken on nvidia LIBVA_DRIVER_NAME = "nvidia"; WLR_NO_HARDWARE_CURSORS = "1"; NIXOS_OZONE_WL = "1"; __GL_THREADED_OPTIMIZATION = "1"; __GL_SHADER_CACHE = "1"; # Hardware acceleration in firefox NVD_BACKEND = "direct"; MOZ_DISABLE_RDD_SANDBOX = "1"; }; # Packages related to NVIDIA graphics environment.systemPackages = with pkgs; [ clinfo gwe nvtopPackages.nvidia virtualglLib vulkan-loader vulkan-tools ]; }; }