frida-tools: 13.6.0 -> 13.6.1 (#377481)
[NixPkgs.git] / nixos / modules / hardware / corectrl.nix
blob6e680ddc846eff2ee44714abd6a8f4fdf303a9d0
2   config,
3   pkgs,
4   lib,
5   ...
6 }:
7 let
8   inherit (lib)
9     mkEnableOption
10     mkIf
11     mkOption
12     mkPackageOption
13     ;
15   cfg = config.programs.corectrl;
18   options.programs.corectrl = {
19     enable = mkEnableOption ''
20       CoreCtrl, a tool to overclock amd graphics cards and processors.
21       Add your user to the corectrl group to run corectrl without needing to enter your password
22     '';
24     package = mkPackageOption pkgs "corectrl" {
25       extraDescription = "Useful for overriding the configuration options used for the package.";
26     };
28     gpuOverclock = {
29       enable = mkEnableOption ''
30         GPU overclocking
31       '';
32       ppfeaturemask = mkOption {
33         type = lib.types.str;
34         default = "0xfffd7fff";
35         example = "0xffffffff";
36         description = ''
37           Sets the `amdgpu.ppfeaturemask` kernel option.
38           In particular, it is used here to set the overdrive bit.
39           Default is `0xfffd7fff` as it is less likely to cause flicker issues.
40           Setting it to `0xffffffff` enables all features.
41         '';
42       };
43     };
44   };
46   config = mkIf cfg.enable {
47     environment.systemPackages = [ cfg.package ];
49     services.dbus.packages = [ cfg.package ];
51     users.groups.corectrl = { };
53     security.polkit.extraConfig = ''
54       polkit.addRule(function(action, subject) {
55           if ((action.id == "org.corectrl.helper.init" ||
56                action.id == "org.corectrl.helperkiller.init") &&
57               subject.local == true &&
58               subject.active == true &&
59               subject.isInGroup("corectrl")) {
60                   return polkit.Result.YES;
61           }
62       });
63     '';
65     # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/amd_shared.h#n169
66     # The overdrive bit
67     boot.kernelParams = mkIf cfg.gpuOverclock.enable [
68       "amdgpu.ppfeaturemask=${cfg.gpuOverclock.ppfeaturemask}"
69     ];
70   };
72   meta.maintainers = with lib.maintainers; [
73     artturin
74     Scrumplex
75   ];