Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
79 lines
2.0 KiB
Nix
79 lines
2.0 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
options,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.services.prometheus.exporters.nut;
|
|
inherit (lib)
|
|
mkOption
|
|
types
|
|
optionalString
|
|
concatStringsSep
|
|
;
|
|
in
|
|
{
|
|
port = 9199;
|
|
extraOpts = {
|
|
nutServer = mkOption {
|
|
type = types.str;
|
|
default = "127.0.0.1";
|
|
description = ''
|
|
Hostname or address of the NUT server
|
|
'';
|
|
};
|
|
nutUser = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
example = "nut";
|
|
description = ''
|
|
The user to log in into NUT server. If set, passwordPath should
|
|
also be set.
|
|
|
|
Default NUT configs usually permit reading variables without
|
|
authentication.
|
|
'';
|
|
};
|
|
passwordPath = mkOption {
|
|
type = types.nullOr types.path;
|
|
default = null;
|
|
apply = final: if final == null then null else toString final;
|
|
description = ''
|
|
A run-time path to the nutUser password file, which should be
|
|
provisioned outside of Nix store.
|
|
'';
|
|
};
|
|
nutVariables = mkOption {
|
|
type = types.listOf types.str;
|
|
default = [ ];
|
|
description = ''
|
|
List of NUT variable names to monitor.
|
|
|
|
If no variables are set, all numeric variables will be exported automatically.
|
|
See the [upstream docs](https://github.com/DRuggeri/nut_exporter?tab=readme-ov-file#variables-and-information)
|
|
for more information.
|
|
'';
|
|
};
|
|
};
|
|
serviceOpts = {
|
|
script = ''
|
|
${optionalString (
|
|
cfg.passwordPath != null
|
|
) "export NUT_EXPORTER_PASSWORD=$(cat ${toString cfg.passwordPath})"}
|
|
${pkgs.prometheus-nut-exporter}/bin/nut_exporter \
|
|
--nut.server=${cfg.nutServer} \
|
|
--web.listen-address="${cfg.listenAddress}:${toString cfg.port}" \
|
|
${optionalString (cfg.nutUser != "") "--nut.username=${cfg.nutUser}"} \
|
|
${
|
|
optionalString (
|
|
cfg.nutVariables != [ ]
|
|
) "--nut.vars_enable=${concatStringsSep "," cfg.nutVariables}"
|
|
} \
|
|
${concatStringsSep " " cfg.extraFlags}
|
|
'';
|
|
};
|
|
}
|