diff --git a/common/gpu/amd/default.nix b/common/gpu/amd/default.nix index 9b1d77c..91ba0b7 100644 --- a/common/gpu/amd/default.nix +++ b/common/gpu/amd/default.nix @@ -1,23 +1,35 @@ { config, lib, pkgs, ... }: { - boot.initrd.kernelModules = [ "amdgpu" ]; - services.xserver.videoDrivers = lib.mkDefault [ "amdgpu" ]; - - hardware.opengl.extraPackages = with pkgs; [ - rocm-opencl-icd - rocm-opencl-runtime - amdvlk - ]; - - hardware.opengl.extraPackages32 = with pkgs; [ - driversi686Linux.amdvlk - ]; - - hardware.opengl = { - driSupport = lib.mkDefault true; - driSupport32Bit = lib.mkDefault true; + options.hardware.amdgpu.loadInInitrd = lib.mkEnableOption (lib.mdDoc + "loading `amdgpu` kernelModule at stage 1. (Add `amdgpu` to `boot.initrd.kernelModules`)" + ) // { + default = true; }; - environment.variables.AMD_VULKAN_ICD = lib.mkDefault "RADV"; + config = lib.mkMerge [ + { + services.xserver.videoDrivers = lib.mkDefault [ "amdgpu" ]; + + hardware.opengl.extraPackages = with pkgs; [ + rocm-opencl-icd + rocm-opencl-runtime + amdvlk + ]; + + hardware.opengl.extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + + hardware.opengl = { + driSupport = lib.mkDefault true; + driSupport32Bit = lib.mkDefault true; + }; + + environment.variables.AMD_VULKAN_ICD = lib.mkDefault "RADV"; + } + (lib.mkIf config.hardware.amdgpu.loadInInitrd { + boot.initrd.kernelModules = [ "amdgpu" ]; + }) + ]; }