nixos/services.thinkfan: remove with lib;

This commit is contained in:
Felix Buehler
2024-08-30 00:30:52 +02:00
parent f4fdd33746
commit d9dc50dc11
+33 -36
View File
@@ -1,7 +1,4 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.thinkfan;
@@ -10,13 +7,13 @@ let
thinkfan = pkgs.thinkfan.override { inherit (cfg) smartSupport; };
# fan-speed and temperature levels
levelType = with types;
levelType = with lib.types;
let
tuple = ts: mkOptionType {
tuple = ts: lib.mkOptionType {
name = "tuple";
merge = mergeOneOption;
merge = lib.mergeOneOption;
check = xs: all id (zipListsWith (t: x: t.check x) ts xs);
description = "tuple of" + concatMapStrings (t: " (${t.description})") ts;
description = "tuple of" + lib.concatMapStrings (t: " (${t.description})") ts;
};
level = ints.unsigned;
special = enum [ "level auto" "level full-speed" "level disengaged" ];
@@ -24,11 +21,11 @@ let
tuple [ (either level special) level level ];
# sensor or fan config
sensorType = name: types.submodule {
freeformType = types.attrsOf settingsFormat.type;
sensorType = name: lib.types.submodule {
freeformType = lib.types.attrsOf settingsFormat.type;
options = {
type = mkOption {
type = types.enum [ "hwmon" "atasmart" "tpacpi" "nvml" ];
type = lib.mkOption {
type = lib.types.enum [ "hwmon" "atasmart" "tpacpi" "nvml" ];
description = ''
The ${name} type, can be
`hwmon` for standard ${name}s,
@@ -41,8 +38,8 @@ let
`nvml` for the (proprietary) nVidia driver.
'';
};
query = mkOption {
type = types.str;
query = lib.mkOption {
type = lib.types.str;
description = ''
The query string used to match one or more ${name}s: can be
a fullpath to the temperature file (single ${name}) or a fullpath
@@ -54,8 +51,8 @@ let
:::
'';
};
indices = mkOption {
type = with types; nullOr (listOf ints.unsigned);
indices = lib.mkOption {
type = with lib.types; nullOr (listOf ints.unsigned);
default = null;
description = ''
A list of ${name}s to pick in case multiple ${name}s match the query.
@@ -65,9 +62,9 @@ let
:::
'';
};
} // optionalAttrs (name == "sensor") {
correction = mkOption {
type = with types; nullOr (listOf int);
} // lib.optionalAttrs (name == "sensor") {
correction = lib.mkOption {
type = with lib.types; nullOr (listOf int);
default = null;
description = ''
A list of values to be added to the temperature of each sensor,
@@ -79,7 +76,7 @@ let
# removes NixOS special and unused attributes
sensorToConf = { type, query, ... }@args:
(filterAttrs (k: v: v != null && !(elem k ["type" "query"])) args)
(lib.filterAttrs (k: v: v != null && !(lib.elem k ["type" "query"])) args)
// { "${type}" = query; };
syntaxNote = name: ''
@@ -103,8 +100,8 @@ in {
services.thinkfan = {
enable = mkOption {
type = types.bool;
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to enable thinkfan, a fan control program.
@@ -117,8 +114,8 @@ in {
relatedPackages = [ "thinkfan" ];
};
smartSupport = mkOption {
type = types.bool;
smartSupport = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to build thinkfan with S.M.A.R.T. support to read temperatures
@@ -126,8 +123,8 @@ in {
'';
};
sensors = mkOption {
type = types.listOf (sensorType "sensor");
sensors = lib.mkOption {
type = lib.types.listOf (sensorType "sensor");
default = [
{ type = "tpacpi";
query = "/proc/acpi/ibm/thermal";
@@ -140,8 +137,8 @@ in {
'';
};
fans = mkOption {
type = types.listOf (sensorType "fan");
fans = lib.mkOption {
type = lib.types.listOf (sensorType "fan");
default = [
{ type = "tpacpi";
query = "/proc/acpi/ibm/fan";
@@ -154,8 +151,8 @@ in {
'';
};
levels = mkOption {
type = types.listOf levelType;
levels = lib.mkOption {
type = lib.types.listOf levelType;
default = [
[0 0 55]
[1 48 60]
@@ -177,8 +174,8 @@ in {
'';
};
extraArgs = mkOption {
type = types.listOf types.str;
extraArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = [ "-b" "0" ];
description = ''
@@ -187,8 +184,8 @@ in {
'';
};
settings = mkOption {
type = types.attrsOf settingsFormat.type;
settings = lib.mkOption {
type = lib.types.attrsOf settingsFormat.type;
default = { };
description = ''
Thinkfan settings. Use this option to configure thinkfan
@@ -203,11 +200,11 @@ in {
};
config = mkIf cfg.enable {
config = lib.mkIf cfg.enable {
environment.systemPackages = [ thinkfan ];
services.thinkfan.settings = mapAttrs (k: v: mkDefault v) {
services.thinkfan.settings = lib.mapAttrs (k: v: lib.mkDefault v) {
sensors = map sensorToConf cfg.sensors;
fans = map sensorToConf cfg.fans;
levels = cfg.levels;
@@ -216,7 +213,7 @@ in {
systemd.packages = [ thinkfan ];
systemd.services = {
thinkfan.environment.THINKFAN_ARGS = escapeShellArgs ([ "-c" configFile ] ++ cfg.extraArgs);
thinkfan.environment.THINKFAN_ARGS = lib.escapeShellArgs ([ "-c" configFile ] ++ cfg.extraArgs);
thinkfan.serviceConfig = {
Restart = "on-failure";
RestartSec = "30s";