1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.hardware.amdgpu;
10in
11{
12 options.hardware.amdgpu = {
13 legacySupport.enable = lib.mkEnableOption ''
14 using `amdgpu` kernel driver instead of `radeon` for Southern Islands
15 (Radeon HD 7000) series and Sea Islands (Radeon HD 8000)
16 series cards. Note: this removes support for analog video outputs,
17 which is only available in the `radeon` driver
18 '';
19 initrd.enable = lib.mkEnableOption ''
20 loading `amdgpu` kernelModule in stage 1.
21 Can fix lower resolution in boot screen during initramfs phase
22 '';
23 opencl.enable = lib.mkEnableOption ''OpenCL support using ROCM runtime library'';
24 # cfg.amdvlk option is defined in ./amdvlk.nix module
25 };
26
27 config = {
28 boot.kernelParams = lib.optionals cfg.legacySupport.enable [
29 "amdgpu.si_support=1"
30 "amdgpu.cik_support=1"
31 "radeon.si_support=0"
32 "radeon.cik_support=0"
33 ];
34
35 boot.initrd.kernelModules = lib.optionals cfg.initrd.enable [ "amdgpu" ];
36
37 hardware.graphics = lib.mkIf cfg.opencl.enable {
38 enable = lib.mkDefault true;
39 extraPackages = [
40 pkgs.rocmPackages.clr
41 pkgs.rocmPackages.clr.icd
42 ];
43 };
44 };
45
46 meta = {
47 maintainers = with lib.maintainers; [ johnrtitor ];
48 };
49}