nixos/prometheus-mailman3-exporter: init module
This commit is contained in:
@@ -85,6 +85,7 @@ let
|
||||
"libvirt"
|
||||
"lnd"
|
||||
"mail"
|
||||
"mailman3"
|
||||
"mikrotik"
|
||||
"modemmanager"
|
||||
"mongodb"
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
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}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user