refactor(gpu): fix vaapi conflict, centralize package conditions

This commit is contained in:
Infinidoge 2022-03-25 18:55:35 -04:00
parent 891d967b3b
commit 826ad1b467

View file

@ -3,6 +3,7 @@ with lib;
with lib.hlissner; with lib.hlissner;
let let
cfg = config.modules.hardware.gpu; cfg = config.modules.hardware.gpu;
any' = any (v: v);
in in
{ {
options.modules.hardware.gpu = { options.modules.hardware.gpu = {
@ -12,15 +13,23 @@ in
}; };
config = mkMerge [ config = mkMerge [
(mkIf (any (v: v) (with cfg; [ amdgpu nvidia intel ])) { (mkIf (any' (with cfg; [ amdgpu nvidia intel ])) {
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;
driSupport = true; driSupport = true;
driSupport32Bit = true; driSupport32Bit = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; flatten [
vaapiVdpau
libvdpau-va-gl libvdpau-va-gl
(optionals (any' (with cfg; [ amdgpu intel ])) [
vaapiVdpau
])
(optionals cfg.intel [
intel-media-driver
vaapiIntel
])
]; ];
}; };
}) })
@ -41,8 +50,6 @@ in
virtualisation.docker.enableNvidia = true; virtualisation.docker.enableNvidia = true;
}) })
(mkIf cfg.intel { (mkIf cfg.intel { })
hardware.opengl.extraPackages = with pkgs; [ intel-media-driver vaapiIntel ];
})
]; ];
} }