about summary refs log tree commit diff
path: root/nixpkgs/nixos/modules/programs/coolercontrol.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/programs/coolercontrol.nix')
-rw-r--r--nixpkgs/nixos/modules/programs/coolercontrol.nix54
1 files changed, 38 insertions, 16 deletions
diff --git a/nixpkgs/nixos/modules/programs/coolercontrol.nix b/nixpkgs/nixos/modules/programs/coolercontrol.nix
index 6e7299ad16b7..8c9a39d2eba9 100644
--- a/nixpkgs/nixos/modules/programs/coolercontrol.nix
+++ b/nixpkgs/nixos/modules/programs/coolercontrol.nix
@@ -10,28 +10,50 @@ in
 {
   ##### interface
   options = {
-    programs.coolercontrol.enable = lib.mkEnableOption (lib.mdDoc "CoolerControl GUI & its background services");
+    programs.coolercontrol = {
+      enable = lib.mkEnableOption "CoolerControl GUI & its background services";
+
+      nvidiaSupport = lib.mkOption {
+        type = lib.types.bool;
+        default = lib.elem "nvidia" config.services.xserver.videoDrivers;
+        defaultText = lib.literalExpression "lib.elem \"nvidia\" config.services.xserver.videoDrivers";
+        description = ''
+          Enable support for Nvidia GPUs.
+        '';
+      };
+    };
   };
 
   ##### implementation
-  config = lib.mkIf cfg.enable {
-    environment.systemPackages = with pkgs.coolercontrol; [
-      coolercontrol-gui
-    ];
-
-    systemd = {
-      packages = with pkgs.coolercontrol; [
-        coolercontrol-liqctld
-        coolercontrold
+  config = lib.mkIf cfg.enable (lib.mkMerge [
+    # Common
+    ({
+      environment.systemPackages = with pkgs.coolercontrol; [
+        coolercontrol-gui
       ];
 
-      # https://github.com/NixOS/nixpkgs/issues/81138
-      services = {
-        coolercontrol-liqctld.wantedBy = [ "multi-user.target" ];
-        coolercontrold.wantedBy = [ "multi-user.target" ];
+      systemd = {
+        packages = with pkgs.coolercontrol; [
+          coolercontrol-liqctld
+          coolercontrold
+        ];
+
+        # https://github.com/NixOS/nixpkgs/issues/81138
+        services = {
+          coolercontrol-liqctld.wantedBy = [ "multi-user.target" ];
+          coolercontrold.wantedBy = [ "multi-user.target" ];
+        };
       };
-    };
-  };
+    })
+
+    # Nvidia support
+    (lib.mkIf cfg.nvidiaSupport {
+      systemd.services.coolercontrold.path = with config.boot.kernelPackages; [
+        nvidia_x11 # nvidia-smi
+        nvidia_x11.settings # nvidia-settings
+      ];
+    })
+  ]);
 
   meta.maintainers = with lib.maintainers; [ OPNA2608 codifryed ];
 }