1# This module provides the proprietary AMDGPU-PRO drivers.
2
3{ config, lib, pkgs, pkgs_i686, ... }:
4
5with lib;
6
7let
8
9 drivers = config.services.xserver.videoDrivers;
10
11 enabled = elem "amdgpu-pro" drivers;
12
13 package = config.boot.kernelPackages.amdgpu-pro;
14 package32 = pkgs_i686.linuxPackages.amdgpu-pro.override { libsOnly = true; kernel = null; };
15
16 opengl = config.hardware.opengl;
17
18in
19
20{
21
22 config = mkIf enabled {
23
24 nixpkgs.config.xorg.abiCompat = "1.18";
25
26 services.xserver.drivers = singleton
27 { name = "amdgpu"; modules = [ package ]; libPath = [ package ]; };
28
29 hardware.opengl.package = package;
30 hardware.opengl.package32 = package32;
31
32 boot.extraModulePackages = [ package ];
33
34 boot.blacklistedKernelModules = [ "radeon" ];
35
36 hardware.firmware = [ package ];
37
38 system.activationScripts.setup-amdgpu-pro = ''
39 mkdir -p /run/lib
40 ln -sfn ${package}/lib ${package.libCompatDir}
41 '' + optionalString opengl.driSupport32Bit ''
42 ln -sfn ${package32}/lib ${package32.libCompatDir}
43 '';
44
45 environment.etc = {
46 "amd/amdrc".source = package + "/etc/amd/amdrc";
47 "amd/amdapfxx.blb".source = package + "/etc/amd/amdapfxx.blb";
48 "gbm/gbm.conf".source = package + "/etc/gbm/gbm.conf";
49 };
50
51 };
52
53}