66 lines
2.2 KiB
Nix
66 lines
2.2 KiB
Nix
{ pkgs, lib, options, ... }: lib.mkMerge [
|
|
{
|
|
# assumes common-gpu-amd from nixos-hardware is also added
|
|
# TODO: should we move it from flake.nix to here?
|
|
# https://github.com/NixOS/nixos-hardware/blob/master/common/gpu/amd/default.nix
|
|
|
|
hardware.opengl.enable = true;
|
|
hardware.opengl.driSupport = true;
|
|
hardware.opengl.driSupport32Bit = true;
|
|
|
|
nixpkgs.config.openglSupport = true; # why is this not set by hardware.opengl.enable ?
|
|
nixpkgs.config.rocmSupport = true;
|
|
nixpkgs.config.vdpauSupport = true;
|
|
nixpkgs.config.vaapiSupport = true;
|
|
|
|
}
|
|
# nixos-hardware common-amd options
|
|
# https://github.com/NixOS/nixos-hardware/blob/master/common/gpu/amd/default.nix
|
|
(lib.mkIf (options ? hardware.amdgpu.opencl.enable) {
|
|
hardware.amdgpu.opencl.enable = lib.mkDefault true;
|
|
})
|
|
(lib.mkIf (!options ? hardware.amdgpu.opencl.enable) {
|
|
hardware.amdgpu.opencl = lib.mkDefault true;
|
|
})
|
|
(lib.mkIf (options ? hardware.amdgpu.amdvlk.enable) {
|
|
#hardware.amdgpu.amdvlk.enable = lib.mkDefault true;
|
|
#hardware.amdgpu.amdvlk.support32Bit.enable = lib.mkDefault true;
|
|
})
|
|
{
|
|
# https://libreddit.noximilien.pbsds.net/r/archlinux/comments/nih9c9/amdgpu_vs_modesetting_in_current_510_kernels_xorg/
|
|
services.xserver.videoDrivers = [ "amdgpu" ]; # use gpu, adaptive sync and and hardware page flipping
|
|
#services.xserver.videoDrivers = [ "modesetting" ]; # integrated (non-accelerated) framebuffer, KMS (default in nixos-hardware)
|
|
|
|
# https://wiki.nixos.org/wiki/AMD_GPU#HIP
|
|
systemd.tmpfiles.rules = let
|
|
rocmEnv = pkgs.symlinkJoin {
|
|
name = "rocm-combined";
|
|
paths = with pkgs.rocmPackages; [
|
|
rocblas
|
|
hipblas
|
|
clr
|
|
];
|
|
};
|
|
in [ "L+ /opt/rocm - - - - ${rocmEnv}" ];
|
|
|
|
nixpkgs.overlays = [
|
|
(prev: final: {
|
|
blender = prev.blender-hip;
|
|
})
|
|
];
|
|
|
|
# enable opencl on polaris, (rx580)
|
|
environment.variables.ROC_ENABLE_PRE_VEGA = "1";
|
|
|
|
environment.systemPackages = [
|
|
(pkgs.nvtopPackages.amd or pkgs.nvtop-amd)
|
|
pkgs.lact
|
|
];
|
|
|
|
# lact - amdgpu GUI tool
|
|
systemd.packages = [ pkgs.lact ];
|
|
systemd.services.lactd.enable = true;
|
|
systemd.services.lactd.wantedBy = [ "multi-user.target" ]; # add this if you want the unit to auto start at boot time
|
|
}
|
|
]
|