nixos/thermald: add manual config file

thermald has two modes: zero-config and manual. Sometimes it is useful
to manually configure thermald to achieve better thermal results or to give
thermald a hand when detecting possible cooling options.

Changed files
+29 -7
nixos
modules
services
hardware
+29 -7
nixos/modules/services/hardware/thermald.nix
···
cfg = config.services.thermald;
in {
###### interface
-
options = {
-
services.thermald = {
enable = mkOption {
default = false;
description = ''
Whether to enable thermald, the temperature management daemon.
-
'';
-
};
-
};
-
};
###### implementation
config = mkIf cfg.enable {
···
systemd.services.thermald = {
description = "Thermal Daemon Service";
wantedBy = [ "multi-user.target" ];
-
script = "exec ${pkgs.thermald}/sbin/thermald --no-daemon --dbus-enable";
};
};
}
···
cfg = config.services.thermald;
in {
###### interface
+
options = {
+
services.thermald = {
enable = mkOption {
default = false;
description = ''
Whether to enable thermald, the temperature management daemon.
+
'';
+
};
+
+
debug = mkOption {
+
type = types.bool;
+
default = false;
+
description = ''
+
Whether to enable debug logging.
+
'';
+
};
+
+
configFile = mkOption {
+
type = types.nullOr types.path;
+
default = null;
+
description = "the thermald manual configuration file.";
+
};
+
};
+
};
###### implementation
config = mkIf cfg.enable {
···
systemd.services.thermald = {
description = "Thermal Daemon Service";
wantedBy = [ "multi-user.target" ];
+
serviceConfig = {
+
ExecStart = ''
+
${pkgs.thermald}/sbin/thermald \
+
--no-daemon \
+
${optionalString cfg.debug "--loglevel=debug"} \
+
${optionalString (cfg.configFile != null) "--config-file ${cfg.configFile}"} \
+
--dbus-enable
+
'';
+
};
};
};
}