vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / programs / coolercontrol.nix
blob1c64d46ae2b903aa23bd29a23110808ed085287d
1 { config
2 , lib
3 , pkgs
4 , ...
5 }:
7 let
8   cfg = config.programs.coolercontrol;
9 in
11   ##### interface
12   options = {
13     programs.coolercontrol = {
14       enable = lib.mkEnableOption "CoolerControl GUI & its background services";
16       nvidiaSupport = lib.mkOption {
17         type = lib.types.bool;
18         default = lib.elem "nvidia" config.services.xserver.videoDrivers;
19         defaultText = lib.literalExpression "lib.elem \"nvidia\" config.services.xserver.videoDrivers";
20         description = ''
21           Enable support for Nvidia GPUs.
22         '';
23       };
24     };
25   };
27   ##### implementation
28   config = lib.mkIf cfg.enable (lib.mkMerge [
29     # Common
30     ({
31       environment.systemPackages = with pkgs.coolercontrol; [
32         coolercontrol-gui
33       ];
35       systemd = {
36         packages = with pkgs.coolercontrol; [
37           coolercontrol-liqctld
38           coolercontrold
39         ];
41         # https://github.com/NixOS/nixpkgs/issues/81138
42         services = {
43           coolercontrol-liqctld.wantedBy = [ "multi-user.target" ];
44           coolercontrold.wantedBy = [ "multi-user.target" ];
45         };
46       };
47     })
49     # Nvidia support
50     (lib.mkIf cfg.nvidiaSupport {
51       systemd.services.coolercontrold.path = let
52         nvidiaPkg = config.hardware.nvidia.package;
53       in [
54         nvidiaPkg # nvidia-smi
55         nvidiaPkg.settings # nvidia-settings
56       ];
57     })
58   ]);
60   meta.maintainers = with lib.maintainers; [ OPNA2608 codifryed ];