nix/os-mods/amdgpu/default.nix

84 lines
2.1 KiB
Nix

{ config
, lib
, pkgs
, inputs
, ...
}: {
programs.corectrl = {
enable = true;
gpuOverclock.enable = true;
};
systemd.tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
"L+ /opt/rocm/rocblas - - - - ${pkgs.rocmPackages.rocblas}"
"L+ /opt/rocm/hipblas - - - - ${pkgs.rocmPackages.hipblas}"
"L+ /opt/rocm/clang - - - - ${pkgs.rocmPackages.llvm.clang}"
"L+ /opt/rocm/runtime - - - - ${pkgs.rocmPackages.rocm-runtime}"
];
chaotic.mesa-git = {
enable = false;
extraPackages = with pkgs; [
mesa_git.opencl
libva-vdpau-driver
obs-studio-plugins.obs-vaapi # TODO check if obs is enabled
gst_all_1.gstreamer
gst_all_1.gst-vaapi
];
extraPackages32 = with pkgs; [
mesa32_git.opencl
driversi686Linux.libva-vdpau-driver
];
};
hardware = {
amdgpu = {
opencl.enable = true;
initrd.enable = true;
};
graphics = {
extraPackages = with pkgs; [
# rocmPackages.clr.icd
libva-vdpau-driver
obs-studio-plugins.obs-vaapi # TODO check if obs is enabled
gst_all_1.gstreamer
gst_all_1.gst-vaapi
];
extraPackages32 = with pkgs; [
driversi686Linux.libva-vdpau-driver
];
};
};
systemd.services.lactd = {
enable = true;
description = "Radeon GPU monitor";
after = [ "syslog.target" "systemd-modules-load.service" ];
unitConfig = { ConditionPathExists = "${pkgs.lact}/bin/lact"; };
serviceConfig = {
User = "root";
ExecStart = "${pkgs.lact}/bin/lact daemon";
};
wantedBy = [ "multi-user.target" ];
};
# Force radv
environment.variables.AMD_VULKAN_ICD = "RADV";
environment.systemPackages = with pkgs; [
## MONITORING TOOLS ##
# nvtopPackages.amd # for AMD GPUs # broken ?
lact
vulkan-tools
libva-utils
glxinfo # TODO right place here or in desktop ?
clinfo
wayland-utils # TODO move somewhere better ?
# nixgl.nixGLIntel
# nixgl.nixVulkanIntel
];
}