at 25.11-pre 1.7 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 cfg = config.hardware.amdgpu.amdvlk; 10in 11{ 12 options.hardware.amdgpu.amdvlk = { 13 enable = lib.mkEnableOption "AMDVLK Vulkan driver"; 14 15 package = lib.mkPackageOption pkgs "amdvlk" { }; 16 17 supportExperimental.enable = lib.mkEnableOption "Experimental features support"; 18 19 support32Bit.enable = lib.mkEnableOption "32-bit driver support"; 20 support32Bit.package = lib.mkPackageOption pkgs [ "driversi686Linux" "amdvlk" ] { }; 21 22 settings = lib.mkOption { 23 type = with lib.types; attrsOf (either str int); 24 default = { }; 25 example = { 26 AllowVkPipelineCachingToDisk = 1; 27 ShaderCacheMode = 1; 28 IFH = 0; 29 EnableVmAlwaysValid = 1; 30 IdleAfterSubmitGpuMask = 1; 31 }; 32 description = '' 33 Runtime settings for AMDVLK to be configured {file}`/etc/amd/amdVulkanSettings.cfg`. 34 See [AMDVLK GitHub page](https://github.com/GPUOpen-Drivers/AMDVLK?tab=readme-ov-file#runtime-settings). 35 ''; 36 }; 37 }; 38 39 config = lib.mkIf cfg.enable { 40 hardware.graphics = 41 { 42 enable = true; 43 extraPackages = [ cfg.package ]; 44 } 45 // lib.optionalAttrs cfg.support32Bit.enable { 46 enable32Bit = true; 47 extraPackages32 = [ cfg.support32Bit.package ]; 48 }; 49 50 environment.sessionVariables = lib.mkIf cfg.supportExperimental.enable { 51 AMDVLK_ENABLE_DEVELOPING_EXT = "all"; 52 }; 53 54 environment.etc = lib.mkIf (cfg.settings != { }) { 55 "amd/amdVulkanSettings.cfg".text = lib.concatStrings ( 56 lib.mapAttrsToList (n: v: '' 57 ${n},${builtins.toString v} 58 '') cfg.settings 59 ); 60 }; 61 }; 62 63 meta = { 64 maintainers = with lib.maintainers; [ johnrtitor ]; 65 }; 66}