mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-26 02:56:36 +03:00
50 lines
1.4 KiB
Nix
50 lines
1.4 KiB
Nix
{ config, lib, pkgs, options }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.services.prometheus.exporters.nut;
|
|
in
|
|
{
|
|
port = 9199;
|
|
extraOpts = {
|
|
nutServer = mkOption {
|
|
type = types.str;
|
|
default = "127.0.0.1";
|
|
description = lib.mdDoc ''
|
|
Hostname or address of the NUT server
|
|
'';
|
|
};
|
|
nutUser = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
example = "nut";
|
|
description = lib.mdDoc ''
|
|
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 = lib.mdDoc ''
|
|
A run-time path to the nutUser password file, which should be
|
|
provisioned outside of Nix store.
|
|
'';
|
|
};
|
|
};
|
|
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}"}
|
|
'';
|
|
};
|
|
}
|