mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-10 17:54:53 +01:00
78 lines
1.7 KiB
Nix
78 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.services.prometheus.exporters.mailman3;
|
|
in
|
|
{
|
|
port = 9934;
|
|
extraOpts = {
|
|
logLevel = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"debug"
|
|
"info"
|
|
"warning"
|
|
"error"
|
|
"critical"
|
|
];
|
|
default = "info";
|
|
description = ''
|
|
Detail level to log.
|
|
'';
|
|
};
|
|
|
|
mailman = {
|
|
addr = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "http://127.0.0.1:8001";
|
|
description = ''
|
|
Mailman3 Core REST API address.
|
|
'';
|
|
};
|
|
|
|
user = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "restadmin";
|
|
description = ''
|
|
Mailman3 Core REST API username.
|
|
'';
|
|
};
|
|
|
|
passFile = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = config.services.mailman.restApiPassFile;
|
|
defaultText = lib.literalExpression "config.services.mailman.restApiPassFile";
|
|
description = ''
|
|
Mailman3 Core REST API password.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
serviceOpts = {
|
|
serviceConfig = {
|
|
LoadCredential = [
|
|
"password:${cfg.mailman.passFile}"
|
|
];
|
|
ExecStart =
|
|
let
|
|
addr = "${
|
|
if (lib.hasInfix ":" cfg.listenAddress) then "[${cfg.listenAddress}]" else cfg.listenAddress
|
|
}:${toString cfg.port}";
|
|
in
|
|
''
|
|
${lib.getExe pkgs.prometheus-mailman3-exporter} \
|
|
--log-level ${cfg.logLevel} \
|
|
--web.listen ${addr} \
|
|
--mailman.address ${cfg.mailman.addr} \
|
|
--mailman.user ${cfg.mailman.user} \
|
|
--mailman.password-file %d/password \
|
|
${lib.concatStringsSep " \\\n " cfg.extraFlags}
|
|
'';
|
|
};
|
|
};
|
|
}
|