From ce17b4274b620d30418ec3900f56d46383f53e62 Mon Sep 17 00:00:00 2001 From: bb2020 Date: Thu, 26 Dec 2024 03:02:30 +0300 Subject: [PATCH] nixos/mbpfan: refactor --- nixos/modules/services/misc/mbpfan.nix | 105 ++++++++----------------- 1 file changed, 33 insertions(+), 72 deletions(-) diff --git a/nixos/modules/services/misc/mbpfan.nix b/nixos/modules/services/misc/mbpfan.nix index 54981fa09d04b..db5e716d06e0b 100644 --- a/nixos/modules/services/misc/mbpfan.nix +++ b/nixos/modules/services/misc/mbpfan.nix @@ -4,6 +4,7 @@ pkgs, ... }: + let cfg = config.services.mbpfan; verbose = lib.optionalString cfg.verbose "v"; @@ -12,89 +13,49 @@ let in { - options.services.mbpfan = { - enable = lib.mkEnableOption "mbpfan, fan controller daemon for Apple Macs and MacBooks"; - package = lib.mkPackageOption pkgs "mbpfan" { }; - - verbose = lib.mkOption { - type = lib.types.bool; - default = false; - description = "If true, sets the log level to verbose."; - }; + options.services.mbpfan.enable = lib.mkEnableOption "mbpfan, fan controller daemon for Apple Macs and MacBooks"; + options.services.mbpfan.verbose = lib.mkEnableOption "verbose log level"; + options.services.mbpfan.silent = lib.mkEnableOption "less aggressive default fan speeds"; + options.services.mbpfan.package = lib.mkPackageOption pkgs "mbpfan" { }; - aggressive = lib.mkOption { - type = lib.types.bool; - default = true; - description = "If true, favors higher default fan speeds."; - }; - - settings = lib.mkOption { - default = { }; - description = "INI configuration for Mbpfan."; - type = lib.types.submodule { - freeformType = format.type; + options.services.mbpfan.settings = lib.mkOption { + default = { }; + description = ""; + type = lib.types.submodule { + freeformType = format.type; - options.general.low_temp = lib.mkOption { - type = lib.types.int; - default = (if cfg.aggressive then 55 else 63); - defaultText = lib.literalExpression "55"; - description = "If temperature is below this, fans will run at minimum speed."; - }; - options.general.high_temp = lib.mkOption { - type = lib.types.int; - default = (if cfg.aggressive then 58 else 66); - defaultText = lib.literalExpression "58"; - description = "If temperature is above this, fan speed will gradually increase."; - }; - options.general.max_temp = lib.mkOption { - type = lib.types.int; - default = (if cfg.aggressive then 78 else 86); - defaultText = lib.literalExpression "78"; - description = "If temperature is above this, fans will run at maximum speed."; - }; - options.general.polling_interval = lib.mkOption { - type = lib.types.int; - default = 1; - description = "The polling interval."; - }; + options.general.low_temp = lib.mkOption { + type = lib.types.int; + default = (if cfg.silent then 63 else 55); + defaultText = lib.literalExpression "55"; + description = "If temperature is below this, fans will run at minimum speed."; + }; + options.general.high_temp = lib.mkOption { + type = lib.types.int; + default = (if cfg.silent then 66 else 58); + defaultText = lib.literalExpression "58"; + description = "If temperature is above this, fan speed will gradually increase."; + }; + options.general.max_temp = lib.mkOption { + type = lib.types.int; + default = (if cfg.silent then 86 else 78); + defaultText = lib.literalExpression "78"; + description = "If temperature is above this, fans will run at maximum speed."; + }; + options.general.polling_interval = lib.mkOption { + type = lib.types.int; + default = 1; + description = "The polling interval."; }; }; }; - imports = [ - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "pollingInterval" ] - [ "services" "mbpfan" "settings" "general" "polling_interval" ] - ) - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "maxTemp" ] - [ "services" "mbpfan" "settings" "general" "max_temp" ] - ) - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "lowTemp" ] - [ "services" "mbpfan" "settings" "general" "low_temp" ] - ) - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "highTemp" ] - [ "services" "mbpfan" "settings" "general" "high_temp" ] - ) - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "minFanSpeed" ] - [ "services" "mbpfan" "settings" "general" "min_fan1_speed" ] - ) - (lib.mkRenamedOptionModule - [ "services" "mbpfan" "maxFanSpeed" ] - [ "services" "mbpfan" "settings" "general" "max_fan1_speed" ] - ) - ]; - config = lib.mkIf cfg.enable { + environment.etc."mbpfan.conf".source = cfgfile; boot.kernelModules = [ "coretemp" "applesmc" ]; - environment.systemPackages = [ cfg.package ]; - environment.etc."mbpfan.conf".source = cfgfile; systemd.services.mbpfan = { description = "A fan manager daemon for MacBook Pro";