diff --git a/modules/.gitkeep b/modules/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/modules/hardware/novidia.nix b/modules/hardware/novidia.nix deleted file mode 100644 index d4219e6..0000000 --- a/modules/hardware/novidia.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ pkgs -, config -, lib -, ... -}: -let - inherit (lib) mkEnableOption mkIf; - cfg = config.my-namespace.hardware.novidia; -in -{ - options.my-namespace.hardware.novidia = { - enable = mkEnableOption "Bypass nvidia driver"; - }; - hardware.graphics = mkIf cfg.enable{ - enable = false; - extraPackages = with pkgs; [ nvidia-vaapi-driver ]; - }; - config = mkIf cfg.enable { - # Enable OpenGL - hardware.graphics = { - enable = false; - extraPackages = with pkgs; [ nvidia-vaapi-driver ]; - }; - # Load nvidia driver for Xorg and Wayland - # boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; - # boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11_production ]; - boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; - - boot.loader.systemd-boot.consoleMode = "max"; - - boot.kernelParams = [ - # "nvidia-drm.fbdev=1" - # "nvidia-drm.modeset=1" - # "nvidia.NVreg_PreserveVideoMemoryAllocations=1" - # "nomodeset" - # "nvidia_drm.modeset=1" - ]; - boot.blacklistedKernelModules = [ - "i915" - "nouveau" - ]; - boot.extraModprobeConfig = '' - blacklist nouveau - options nouveau modeset=0 - ''; - # 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 - # ]; - services.xserver.videoDrivers = [ "nvidia" ]; - boot.initrd.kernelModules = [ - # "nvidia" - # "nvidia-drm" - # "nvidiafb" - # "nvidia-modeset" - # "nvidia-uvm" - # "i2c-nvidia_gpu" - ]; - #boot.initrd.kernelModules = [ "nvidia" ]; - - hardware.enableAllFirmware = true; - hardware.nvidia = { - nvidiaPersistenced = true; - # 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.stable; - # package = config.boot.kernelPackages.nvidiaPackages.production; - - }; - hardware.nvidia.prime = { - offload = { - enable = true; - enableOffloadCmd = true; - }; - # 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 - }; - - users.users.andreas = { - extraGroups = [ "video" "render" ]; - }; - }; -} diff --git a/modules/hardware/nvidia-stable.nix b/modules/nixos/hardware/graphics-nvidia-prime-amd/default.nix similarity index 52% rename from modules/hardware/nvidia-stable.nix rename to modules/nixos/hardware/graphics-nvidia-prime-amd/default.nix index 5e092b6..a74d5da 100644 --- a/modules/hardware/nvidia-stable.nix +++ b/modules/nixos/hardware/graphics-nvidia-prime-amd/default.nix @@ -1,70 +1,80 @@ -{ pkgs -, config +{ config , lib +, pkgs , ... }: let inherit (lib) mkEnableOption mkIf; - cfg = config.my-namespace.hardware.nvidia-stable; + inherit (lib.my-namespace) disabled enabled; + + cfg = config.my-namespace.hardware.graphics-nvidia-prime-amd; in { - options.my-namespace.hardware.nvidia-stable = { - enable = mkEnableOption "Enable stable NVIDIA drivers"; + options.my-namespace.hardware.graphics-nvidia-prime-amd = { + 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 ]; }; - # Load nvidia driver for Xorg and Wayland - # boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; - # boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11_production ]; - boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; + + # 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=1" - "nomodeset" + "nvidia-drm.modeset=0" + # "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" - ]; - # 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 - # ]; - services.xserver.videoDrivers = [ "nvidia" ]; - boot.initrd.kernelModules = [ - "nvidia" - "nvidia-drm" - # "nvidiafb" - # "nvidia-modeset" + # "nvidia" + # "nvidia-drm" # "nvidia-uvm" - # "i2c-nvidia_gpu" + # "nvidiafb" + # "nvidia_drm" + # "nvidia_modeset" ]; - #boot.initrd.kernelModules = [ "nvidia" ]; - hardware.enableAllFirmware = true; + # Extra blacklist nouveau + boot.extraModprobeConfig = '' + blacklist nouveau + options nouveau modeset=0 + ''; + + # Configure NVIDIA driver hardware.nvidia = { - nvidiaPersistenced = true; # Modesetting is required. modesetting.enable = true; @@ -92,27 +102,30 @@ in nvidiaSettings = true; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; + package = config.boot.kernelPackages.nvidiaPackages.beta; + # package = config.boot.kernelPackages.nvidiaPackages.none; # package = config.boot.kernelPackages.nvidiaPackages.production; - }; - hardware.nvidia.prime = { - offload = { - enable = true; - enableOffloadCmd = true; + 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 }; - # 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 + }; - environment.systemPackages = with pkgs [ - pkgs.nvtopPackages.nvidia - ]; - + # Add user to extra groups users.users.andreas = { extraGroups = [ "video" "render" ]; }; + }; } diff --git a/systems/x86_64-linux/drivebystation-nix/hardware/graphics/nvidia-stable.nix b/systems/x86_64-linux/drivebystation-nix/hardware/graphics/nvidia-stable.nix index 29354e7..7effea2 100644 --- a/systems/x86_64-linux/drivebystation-nix/hardware/graphics/nvidia-stable.nix +++ b/systems/x86_64-linux/drivebystation-nix/hardware/graphics/nvidia-stable.nix @@ -3,8 +3,7 @@ let inherit (lib.my-namespace) enabled; in { - lib.my-namespace.hardware = { - novidia = enabled; - #nvidia-stable.enabled = enabled; + my-namespace.hardware = { + graphics-nvidia-prime-amd = enabled; }; } diff --git a/systems/x86_64-linux/drivebystation-nix/hardware/hardware-configuration.nix b/systems/x86_64-linux/drivebystation-nix/hardware/hardware-configuration.nix index 2668ebb..87d9707 100644 --- a/systems/x86_64-linux/drivebystation-nix/hardware/hardware-configuration.nix +++ b/systems/x86_64-linux/drivebystation-nix/hardware/hardware-configuration.nix @@ -8,7 +8,7 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ./graphics/nvidia-stable.nix - ./graphics/nvidia.nix + # ./graphics/nvidia.nix ./acer-monitor-edid.nix ]; #boot.kernelPackages = pkgs.linuxPackages_latest;