diff options
author | William A. Kennington III <william@wkennington.com> | 2015-05-01 15:57:09 -0700 |
---|---|---|
committer | William A. Kennington III <william@wkennington.com> | 2015-05-01 15:57:09 -0700 |
commit | 00df204c82bd6d585c3f19d1a31588fa72519184 (patch) | |
tree | 4201fed8adf0505e787b9cf335cd52a7ad657570 /nixos/modules/services/misc/mbpfan.nix | |
parent | 8591db4b10e50ad3b61b1708787e4de314424d5d (diff) | |
parent | cf0b6b7be866aaeac75c2ee24245a7bb6ba633b2 (diff) | |
download | nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar.gz nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar.bz2 nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar.lz nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar.xz nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.tar.zst nixlib-00df204c82bd6d585c3f19d1a31588fa72519184.zip |
Merge remote-tracking branch 'upstream/master' into staging
Diffstat (limited to 'nixos/modules/services/misc/mbpfan.nix')
-rw-r--r-- | nixos/modules/services/misc/mbpfan.nix | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/mbpfan.nix b/nixos/modules/services/misc/mbpfan.nix new file mode 100644 index 000000000000..3fb5f684b761 --- /dev/null +++ b/nixos/modules/services/misc/mbpfan.nix @@ -0,0 +1,113 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.mbpfan; + verbose = if cfg.verbose then "v" else ""; + +in { + options.services.mbpfan = { + enable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to enable the mbpfan daemon. + ''; + }; + + package = mkOption { + default = pkgs.mbpfan; + description = '' + The package used for the mbpfan daemon. + ''; + }; + + minFanSpeed = mkOption { + type = types.int; + default = 2000; + description = '' + The minimum fan speed. + ''; + }; + + maxFanSpeed = mkOption { + type = types.int; + default = 6200; + description = '' + The maximum fan speed. + ''; + }; + + lowTemp = mkOption { + type = types.int; + default = 63; + description = '' + The low temperature. + ''; + }; + + highTemp = mkOption { + type = types.int; + default = 66; + description = '' + The high temperature. + ''; + }; + + maxTemp = mkOption { + type = types.int; + default = 86; + description = '' + The maximum temperature. + ''; + }; + + pollingInterval = mkOption { + type = types.int; + default = 7; + description = '' + The polling interval. + ''; + }; + + verbose = mkOption { + type = types.bool; + default = false; + description = '' + If true, sets the log level to verbose. + ''; + }; + }; + + config = mkIf cfg.enable { + boot.kernelModules = [ "coretemp" "applesmc" ]; + + environment = { + etc."mbpfan.conf".text = '' + [general] + min_fan_speed = ${toString cfg.minFanSpeed} + max_fan_speed = ${toString cfg.maxFanSpeed} + low_temp = ${toString cfg.lowTemp} + high_temp = ${toString cfg.highTemp} + max_temp = ${toString cfg.maxTemp} + polling_interval = ${toString cfg.pollingInterval} + ''; + systemPackages = [ cfg.package ]; + }; + + systemd.services.mbpfan = { + description = "A fan manager daemon for MacBook Pro"; + wantedBy = [ "sysinit.target" ]; + after = [ "syslog.target" "sysinit.target" ]; + restartTriggers = [ config.environment.etc."mbpfan.conf".source ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${cfg.package}/bin/mbpfan -f${verbose}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + PIDFile = "/var/run/mbpfan.pid"; + Restart = "always"; + }; + }; + }; +} |