diff --git a/modules/nixos/hardware/graphics-nvidia-prime-amd-testing/default.nix b/modules/nixos/hardware/graphics-nvidia-prime-amd-testing/default.nix new file mode 100644 index 0000000..81048e4 --- /dev/null +++ b/modules/nixos/hardware/graphics-nvidia-prime-amd-testing/default.nix @@ -0,0 +1,131 @@ +{ config +, lib +, pkgs +, ... +}: +let + inherit (lib) mkEnableOption mkIf; + inherit (lib.my-namespace) disabled enabled; + + cfg = config.my-namespace.hardware.graphics-nvidia-prime-amd-testing; +in +{ + options.my-namespace.hardware.graphics-nvidia-prime-amd-testing = { + enable = mkEnableOption "Enable nvidia"; + }; + config = mkIf cfg.enable { + + # Enable NVIDIA driver for X11 and Wayland + services.xserver.videoDrivers = [ "amdgpu" "nvidia" ]; + + # Enable OpenGL + hardware.graphics = { + enable = true; + extraPackages = with pkgs; [ nvidia-vaapi-driver ]; + }; + + # Use Beta Driver Package + boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11_beta ]; + + + + boot.loader.systemd-boot.consoleMode = "max"; + + # Enable required Kernel Modules + boot.initrd.kernelModules = [ + "amdgpu" + "nvidia" + # "nvidia-drm" + "nvidiafb" + # "nvidia-uvm" + # "nvidia-modeset" + # "i2c-nvidia_gpu" + ]; + + + boot.kernelParams = [ + "amdgpu.modeset=1" + "nvidia-drm.fbdev=1" + "nvidia-drm.modeset=1" + # "nvidia.NVreg_PreserveVideoMemoryAllocations=0" + "amd_iommu=on" + # "vfio-pci.ids=\"10de:2489,10de:228b\"" + # "nomodeset" + # "nvidia_drm.modeset=1" + ]; + + + # Blacklist intel and nouveau + boot.blacklistedKernelModules = [ + "i915" + "nouveau" + # "nvidia" + # "nvidia-drm" + # "nvidia-uvm" + # "nvidiafb" + # "nvidia_drm" + # "nvidia_modeset" + ]; + + # Extra blacklist nouveau + boot.extraModprobeConfig = '' + blacklist nouveau + options nouveau modeset=0 + ''; + + # Configure NVIDIA driver + 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 = true; + + # 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; + # package = config.boot.kernelPackages.nvidiaPackages.none; + # package = config.boot.kernelPackages.nvidiaPackages.production; + + forceFullCompositionPipeline = false; + + prime = { + offload = { + enable = true; + enableOffloadCmd = true; + }; + reverseSync.enable = false; + # Make sure to use the correct Bus ID values for your system! + # intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:01:0:0"; + amdgpuBusId = "PCI:50:0:0"; #For AMD GPU + }; + + }; + + # Add user to extra groups + users.users.andreas = { + extraGroups = [ "video" "render" ]; + }; + + }; +}