From 29ef3d58b59eb6edec31999d3acf4b07787d32ca Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Sat, 13 Apr 2024 11:35:04 +0200 Subject: nixos/coolercontrol: Add support for Nvidia hardware --- nixos/modules/programs/coolercontrol.nix | 54 ++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 16 deletions(-) (limited to 'nixos') diff --git a/nixos/modules/programs/coolercontrol.nix b/nixos/modules/programs/coolercontrol.nix index 6e7299ad16b72..c2b77ffd800f4 100644 --- a/nixos/modules/programs/coolercontrol.nix +++ b/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 (lib.mdDoc "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 = lib.mdDoc '' + 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 ]; } -- cgit 1.4.1