{ pkgs, ... }: { boot.kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; environment.sessionVariables = with pkgs; { VDPAU_DRIVER = "radeonsi"; LIBVA_DRIVER_NAME = "radeonsi"; AMD_VULKAN_ICD = "RADV"; VK_ICD_FILENAMES="${pkgsi686Linux.mesa}/share/vulkan/icd.d/radeon_icd.i686.json:${mesa}/share/vulkan/icd.d/radeon_icd.x86_64.json"; __EGL_VENDOR_LIBRARY_FILENAMES="${pkgsi686Linux.mesa}/share/glvnd/egl_vendor.d/50_mesa.json:${mesa}/share/glvnd/egl_vendor.d/50_mesa.json"; }; environment.systemPackages = with pkgs; [ radeontop (writeShellScriptBin "proton-env-amdvlk" '' export AMD_VULKAN_ICD="AMDVLK" export VK_ICD_FILENAMES="${amdvlk}/share/vulkan/icd.d/amd_icd64.json" proton-env "$@" '') ]; security.wrappers = { radeontop = { owner = "root"; group = "root"; source = "${pkgs.radeontop}/bin/radeontop"; capabilities = "cap_perfmon+ep"; }; }; # https://github.com/sibradzic/amdgpu-clocks # @TODO: Fetch and patch scripts from the git repo. #environment.etc = { # XFX RX 6600 # "default/amdgpu-custom-states.card0".text = '' # OD_VDDGFX_OFFSET: # -55mV # FORCE_POWER_CAP: 120000000 # FORCE_PERF_LEVEL: auto # FORCE_POWER_PROFILE: 1 # ''; #}; #environment.systemPackages = [ amdgpu-clocks pkgs.radeontop ]; #systemd.services.amdgpu-clocks = { # description = "Set custom amdgpu clocks & voltages"; # after = [ "multi-user.target" "rc-local.service" "systemd-user-sessions.service" ]; # wants = [ "modprobe@amdgpu.service" ]; # wantedBy = [ "multi-user.target" ]; # serviceConfig = { # Type = "oneshot"; # ExecStart = "${amdgpu-clocks}/bin/amdgpu-clocks"; # ExecStop = "${amdgpu-clocks}/bin/amdgpu-clocks restore"; # ExecReload = "${amdgpu-clocks}/bin/amdgpu-clocks"; # RemainAfterExit = true; # }; #}; }