at 24.11-pre 1.4 kB view raw
1{ config 2, lib 3, pkgs 4, ... 5}: 6 7let 8 cfg = config.programs.coolercontrol; 9in 10{ 11 ##### interface 12 options = { 13 programs.coolercontrol = { 14 enable = lib.mkEnableOption "CoolerControl GUI & its background services"; 15 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 }; 26 27 ##### implementation 28 config = lib.mkIf cfg.enable (lib.mkMerge [ 29 # Common 30 ({ 31 environment.systemPackages = with pkgs.coolercontrol; [ 32 coolercontrol-gui 33 ]; 34 35 systemd = { 36 packages = with pkgs.coolercontrol; [ 37 coolercontrol-liqctld 38 coolercontrold 39 ]; 40 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 }) 48 49 # Nvidia support 50 (lib.mkIf cfg.nvidiaSupport { 51 systemd.services.coolercontrold.path = with config.boot.kernelPackages; [ 52 nvidia_x11 # nvidia-smi 53 nvidia_x11.settings # nvidia-settings 54 ]; 55 }) 56 ]); 57 58 meta.maintainers = with lib.maintainers; [ OPNA2608 codifryed ]; 59}