grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / hardware / amdvlk.nix
blob32d6fb3be21dc7d6d5d4dc59d33584d21025d6ea
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.hardware.amdgpu.amdvlk;
5 in {
6   options.hardware.amdgpu.amdvlk = {
7     enable = lib.mkEnableOption "AMDVLK Vulkan driver";
9     package = lib.mkPackageOption pkgs "amdvlk" { };
11     supportExperimental.enable = lib.mkEnableOption "Experimental features support";
13     support32Bit.enable = lib.mkEnableOption "32-bit driver support";
14     support32Bit.package = lib.mkPackageOption pkgs [ "driversi686Linux" "amdvlk" ] { };
16     settings = lib.mkOption {
17       type = with lib.types; attrsOf (either str int);
18       default = { };
19       example = {
20         AllowVkPipelineCachingToDisk = 1;
21         ShaderCacheMode = 1;
22         IFH = 0;
23         EnableVmAlwaysValid = 1;
24         IdleAfterSubmitGpuMask = 1;
25       };
26       description = ''
27         Runtime settings for AMDVLK to be configured {file}`/etc/amd/amdVulkanSettings.cfg`.
28         See [AMDVLK GitHub page](https://github.com/GPUOpen-Drivers/AMDVLK?tab=readme-ov-file#runtime-settings).
29       '';
30     };
31   };
33   config = lib.mkIf cfg.enable {
34     hardware.graphics = {
35       enable = true;
36       extraPackages = [ cfg.package ];
37       extraPackages32 = [ cfg.support32Bit.package ];
38     };
40     services.xserver.videoDrivers = [ "amdgpu" ];
42     environment.sessionVariables = lib.mkIf cfg.supportExperimental.enable {
43       AMDVLK_ENABLE_DEVELOPING_EXT = "all";
44     };
46     environment.etc = lib.mkIf (cfg.settings != { }) {
47       "amd/amdVulkanSettings.cfg".text = lib.concatStrings
48         (lib.mapAttrsToList
49           (n: v: ''
50             ${n},${builtins.toString v}
51           '')
52           cfg.settings);
53     };
54   };
56   meta = {
57     maintainers = with lib.maintainers; [ johnrtitor ];
58   };