mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-21 00:49:27 +03:00
63 lines
1.9 KiB
Nix
63 lines
1.9 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.
|
|
'';
|
|
};
|
|
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}
|
|
'';
|
|
};
|
|
}
|