Add opencl to amd

This commit is contained in:
DashieTM 2025-02-22 01:36:33 +01:00
parent 1273cd7361
commit f9ddae6478

View file

@ -5,8 +5,7 @@
pkgs, pkgs,
... ...
}: { }: {
options.mods = { options.mods.gpu = {
gpu = {
nvidia.enable = lib.mkOption { nvidia.enable = lib.mkOption {
default = false; default = false;
example = true; example = true;
@ -50,52 +49,62 @@
}; };
}; };
}; };
};
config = config = lib.optionalAttrs (options ? boot) {
(lib.optionalAttrs (options ? hardware.graphics) { boot = lib.mkIf config.mods.gpu.amdgpu.enable {
boot = lib.mkIf config.mods.amdgpu.enable {
kernelModules = ["kvm-amd"]; kernelModules = ["kvm-amd"];
initrd.kernelModules = ["amdgpu"]; initrd.kernelModules = ["amdgpu"];
kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"]; kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"];
}; };
services.xserver.videoDrivers =
if config.mods.gpu.amdgpu.enable
then ["amdgpu"]
else if config.mods.gpu.nvidia.enable
then ["nvidia"]
else [];
environment.variables =
if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable)
then {
RUSTICL_ENABLE = "radeonsi";
}
else {};
hardware = { hardware = {
nvidia = lib.mkIf config.mods.gpu.nvidia.enable {
modesetting.enable = true;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
graphics = let graphics = let
amdPackages = [ amdPackages = [
(lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) (lib.mkIf (config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
(lib.mkIf ( (lib.mkIf (
config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable
) )
pkgs.intel-media-driver) pkgs.intel-media-driver)
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libva)
(lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau)
(lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa.drivers)
]; ];
rocmPackages = [ rocmPackages = [
pkgs.rocmPackages.clr.icd pkgs.rocmPackages.clr.icd
pkgs.rocm-opencl-runtime pkgs.mesa
pkgs.mesa.opencl
pkgs.vulkan-loader
pkgs.vulkan-validation-layers
pkgs.vulkan-tools
pkgs.clinfo
]; ];
in { in {
enable = true; enable = true;
enable32Bit = lib.mkDefault true; enable32Bit = lib.mkDefault true;
extraPackages = extraPackages =
amdPackages amdPackages
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages);
}; };
}; };
})
// lib.optionalAttrs (options ? hardware.graphics) (
lib.mkIf config.mods.gpu.nvidia.enable {
hardware.nvidia = {
modesetting.enable = true;
# powerManagement.enable = false;
# powerManagement.finegrained = true;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
services.xserver.videoDrivers = ["nvidia"];
}
);
} }