mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-21 19:44:09 +00:00
prometheus-imap-mailstat-exporter: init at 0.0.1
To be able to monitor the number of (unread) mails in mailboxes
This commit is contained in:
parent
970a59bd19
commit
81daaece83
@ -37,6 +37,7 @@ let
|
||||
"fritzbox"
|
||||
"graphite"
|
||||
"idrac"
|
||||
"imap-mailstat"
|
||||
"influxdb"
|
||||
"ipmi"
|
||||
"json"
|
||||
|
@ -0,0 +1,71 @@
|
||||
{ config, lib, pkgs, options }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.prometheus.exporters.imap-mailstat;
|
||||
valueToString = value:
|
||||
if (builtins.typeOf value == "string") then "\"${value}\""
|
||||
else (
|
||||
if (builtins.typeOf value == "int") then "${toString value}"
|
||||
else (
|
||||
if (builtins.typeOf value == "bool") then (if value then "true" else "false")
|
||||
else "XXX ${toString value}"
|
||||
)
|
||||
);
|
||||
createConfigFile = accounts:
|
||||
# unfortunately on toTOML yet
|
||||
# https://github.com/NixOS/nix/issues/3929
|
||||
pkgs.writeText "imap-mailstat-exporter.conf" ''
|
||||
${concatStrings (attrValues (mapAttrs (name: config: "[[Accounts]]\nname = \"${name}\"\n${concatStrings (attrValues (mapAttrs (k: v: "${k} = ${valueToString v}\n") config))}") accounts))}
|
||||
'';
|
||||
mkOpt = type: description: mkOption {
|
||||
type = types.nullOr type;
|
||||
default = null;
|
||||
description = lib.mdDoc description;
|
||||
};
|
||||
accountOptions.options = {
|
||||
mailaddress = mkOpt types.str "Your email address (at the moment used as login name)";
|
||||
username = mkOpt types.str "If empty string mailaddress value is used";
|
||||
password = mkOpt types.str "";
|
||||
serveraddress = mkOpt types.str "mailserver name or address";
|
||||
serverport = mkOpt types.int "imap port number (at the moment only tls connection is supported)";
|
||||
starttls = mkOpt types.bool "set to true for using STARTTLS to start a TLS connection";
|
||||
};
|
||||
in
|
||||
{
|
||||
port = 8081;
|
||||
extraOpts = {
|
||||
oldestUnseenDate = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Enable metric with timestamp of oldest unseen mail
|
||||
'';
|
||||
};
|
||||
accounts = mkOption {
|
||||
type = types.attrsOf (types.submodule accountOptions);
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
Accounts to monitor
|
||||
'';
|
||||
};
|
||||
configurationFile = mkOption {
|
||||
type = types.path;
|
||||
example = "/path/to/config-file";
|
||||
description = lib.mdDoc ''
|
||||
File containing the configuration
|
||||
'';
|
||||
};
|
||||
};
|
||||
serviceOpts = {
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.prometheus-imap-mailstat-exporter}/bin/imap-mailstat-exporter \
|
||||
-config ${createConfigFile cfg.accounts} \
|
||||
${optionalString cfg.oldestUnseenDate "-oldestunseendate"} \
|
||||
${concatStringsSep " \\\n " cfg.extraFlags}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "imap-mailstat-exporter";
|
||||
version = "0.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bt909";
|
||||
repo = "imap-mailstat-exporter";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-aR/94C9SI+FPs3zg3bpexmgGYrhxghyHwpXj25x0yuw=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-M5Ho4CiO5DC6mWzenXEo2pu0WLHj5S8AV3oEFwD31Sw=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Export Prometheus-style metrics about how many emails you have in your INBOX and in additional configured folders";
|
||||
homepage = "https://github.com/bt909/imap-mailstat-exporter";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ raboof ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -27356,6 +27356,7 @@ with pkgs;
|
||||
prometheus-graphite-exporter = callPackage ../servers/monitoring/prometheus/graphite-exporter.nix { };
|
||||
prometheus-haproxy-exporter = callPackage ../servers/monitoring/prometheus/haproxy-exporter.nix { };
|
||||
prometheus-idrac-exporter = callPackage ../servers/monitoring/prometheus/idrac-exporter.nix { };
|
||||
prometheus-imap-mailstat-exporter = callPackage ../servers/monitoring/prometheus/imap-mailstat-exporter.nix { };
|
||||
prometheus-influxdb-exporter = callPackage ../servers/monitoring/prometheus/influxdb-exporter.nix { };
|
||||
prometheus-ipmi-exporter = callPackage ../servers/monitoring/prometheus/ipmi-exporter.nix { };
|
||||
prometheus-jitsi-exporter = callPackage ../servers/monitoring/prometheus/jitsi-exporter.nix { };
|
||||
|
Loading…
Reference in New Issue
Block a user