about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/monitoring/prometheus
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/monitoring/prometheus')
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/Cargo.lock1016
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix49
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/apcupsd-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/artifactory-exporter.nix41
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/atlas-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/aws-s3-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/bind-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/bird-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/bitcoin-exporter.nix42
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix38
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/cloudflare-exporter.nix23
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/collectd-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/consul-exporter.nix31
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix69
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/default.nix134
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/dmarc-metrics-exporter/default.nix61
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/dnsmasq-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/domain-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter-deps.nix102
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix40
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/fastly-exporter.nix31
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/flow-exporter.nix23
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/fritzbox-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix29
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/graphite-exporter.nix36
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter.nix30
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter/config-from-environment.patch100
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/imap-mailstat-exporter.nix29
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix40
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/ipmi-exporter.nix41
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix23
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/jmx-httpserver.nix34
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/json-exporter.nix25
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/junos-czerwonk-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/kea-exporter.nix37
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/keylight-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/knot-exporter.nix41
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/kthxbye.nix39
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/lnd-exporter.nix27
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/mail-exporter.nix32
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/mikrotik-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/default.nix35
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/deps.nix174
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/modemmanager-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/mongodb-exporter.nix39
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix36
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/nats-exporter.nix27
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix25
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/nginx-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/node-exporter.nix46
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/nut-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/openldap-exporter.nix30
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix23
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/php-fpm-exporter.nix59
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/pihole-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/ping-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/postfix-exporter.nix42
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/postgres-exporter.nix38
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/process-exporter.nix31
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/prom2json.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/promscale/default.nix55
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/pushgateway.nix36
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/pve-exporter.nix39
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/rabbitmq-exporter.nix29
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter-deps.nix390
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter.nix33
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/rtl_433-exporter.nix26
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/sabnzbd-exporter.nix38
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/sachet.nix25
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/script-exporter.nix25
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/shelly-exporter.nix24
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/smartctl-exporter/default.nix33
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/smokeping-prober.nix37
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/snmp-exporter.nix28
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/sql-exporter.nix37
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/statsd-exporter.nix38
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/surfboard-exporter.nix25
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/systemd-exporter.nix34
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/tor-exporter.nix39
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/unbound-exporter.nix34
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/v2ray-exporter.nix22
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/varnish-exporter.nix31
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix31
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/xmpp-alerts.nix61
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/zfs-exporter.nix39
88 files changed, 4585 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/Cargo.lock b/nixpkgs/pkgs/servers/monitoring/prometheus/Cargo.lock
new file mode 100644
index 000000000000..e03f69f58f1c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/Cargo.lock
@@ -0,0 +1,1016 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "ansi_term"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "approx"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99e"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bytes"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
+
+[[package]]
+name = "bytes"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
+
+[[package]]
+name = "cc"
+version = "1.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0"
+
+[[package]]
+name = "cfg-if"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "claim"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f81099d6bb72e1df6d50bb2347224b666a670912bb7f06dbe867a4a070ab3ce8"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "clap"
+version = "2.33.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
+dependencies = [
+ "ansi_term",
+ "atty",
+ "bitflags",
+ "strsim",
+ "textwrap",
+ "unicode-width",
+ "vec_map",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
+
+[[package]]
+name = "domain"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb073186f6285f852b9e71b544111306ab08da4a6b40c25a73f4c9ee3e3df29"
+dependencies = [
+ "rand",
+]
+
+[[package]]
+name = "dtoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "fuchsia-zircon"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+dependencies = [
+ "bitflags",
+ "fuchsia-zircon-sys",
+]
+
+[[package]]
+name = "fuchsia-zircon-sys"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
+
+[[package]]
+name = "futures-sink"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
+
+[[package]]
+name = "futures-task"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
+
+[[package]]
+name = "futures-util"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
+dependencies = [
+ "autocfg",
+ "futures-core",
+ "futures-task",
+ "pin-project-lite 0.2.7",
+ "pin-utils",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "h2"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535"
+dependencies = [
+ "bytes 0.5.6",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+ "tracing-futures",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "http"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11"
+dependencies = [
+ "bytes 1.1.0",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
+dependencies = [
+ "bytes 0.5.6",
+ "http",
+]
+
+[[package]]
+name = "httparse"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
+
+[[package]]
+name = "httpdate"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
+
+[[package]]
+name = "hyper"
+version = "0.13.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb"
+dependencies = [
+ "bytes 0.5.6",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "iovec"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+dependencies = [
+ "winapi 0.2.8",
+ "winapi-build",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
+
+[[package]]
+name = "log"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "memchr"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+
+[[package]]
+name = "mio"
+version = "0.6.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4"
+dependencies = [
+ "cfg-if 0.1.10",
+ "fuchsia-zircon",
+ "fuchsia-zircon-sys",
+ "iovec",
+ "kernel32-sys",
+ "libc",
+ "log",
+ "miow",
+ "net2",
+ "slab",
+ "winapi 0.2.8",
+]
+
+[[package]]
+name = "mio-uds"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
+dependencies = [
+ "iovec",
+ "libc",
+ "mio",
+]
+
+[[package]]
+name = "miow"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d"
+dependencies = [
+ "kernel32-sys",
+ "net2",
+ "winapi 0.2.8",
+ "ws2_32-sys",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.3"
+source = "git+https://github.com/Goirad/rust-native-tls.git?branch=pkcs8-squashed#255dd5493b446755a9e40be3a4638afedfe67b03"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "net2"
+version = "0.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae"
+dependencies = [
+ "cfg-if 0.1.10",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
+
+[[package]]
+name = "openssl"
+version = "0.10.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a"
+dependencies = [
+ "bitflags",
+ "cfg-if 1.0.0",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
+
+[[package]]
+name = "openssl-src"
+version = "111.16.0+1.1.1l"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ab2173f69416cf3ec12debb5823d244127d23a9b127d5a5189aa97c5fa2859f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1996d2d305e561b70d1ee0c53f1542833f4e1ac6ce9a6708b6ff2738ca67dc82"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "openssl-src",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d"
+dependencies = [
+ "unicode-xid",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
+dependencies = [
+ "lazy_static",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "security-framework"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df"
+dependencies = [
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895"
+dependencies = [
+ "core-foundation-sys",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "simple_logger"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7de33c687404ec3045d4a0d437580455257c0436f858d702f244e7d652f9f07"
+dependencies = [
+ "atty",
+ "log",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590"
+
+[[package]]
+name = "socket2"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+[[package]]
+name = "structopt"
+version = "0.3.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf9d950ef167e25e0bdb073cf1d68e9ad2795ac826f2f3f59647817cf23c0bfa"
+dependencies = [
+ "clap",
+ "lazy_static",
+ "structopt-derive",
+]
+
+[[package]]
+name = "structopt-derive"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "134d838a2c9943ac3125cf6df165eda53493451b719f3255b2a26b85f772d0ba"
+dependencies = [
+ "heck",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.76"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "rand",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "tokio"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092"
+dependencies = [
+ "bytes 0.5.6",
+ "fnv",
+ "futures-core",
+ "iovec",
+ "lazy_static",
+ "libc",
+ "memchr",
+ "mio",
+ "mio-uds",
+ "pin-project-lite 0.1.12",
+ "signal-hook-registry",
+ "slab",
+ "tokio-macros",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-tls"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499"
+dependencies = [
+ "bytes 0.5.6",
+ "futures-core",
+ "futures-sink",
+ "log",
+ "pin-project-lite 0.1.12",
+ "tokio",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
+
+[[package]]
+name = "tracing"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8"
+dependencies = [
+ "cfg-if 1.0.0",
+ "log",
+ "pin-project-lite 0.2.7",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "tracing-futures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+dependencies = [
+ "pin-project",
+ "tracing",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
+
+[[package]]
+name = "unbound-telemetry"
+version = "0.1.0"
+dependencies = [
+ "approx",
+ "async-trait",
+ "claim",
+ "domain",
+ "dtoa",
+ "hyper",
+ "itoa",
+ "libc",
+ "log",
+ "native-tls",
+ "openssl",
+ "simple_logger",
+ "structopt",
+ "tokio",
+ "tokio-tls",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
+[[package]]
+name = "version_check"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
+
+[[package]]
+name = "want"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+dependencies = [
+ "log",
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.10.2+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "ws2_32-sys"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+dependencies = [
+ "winapi 0.2.8",
+ "winapi-build",
+]
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix
new file mode 100644
index 000000000000..ba1c35ee294d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix
@@ -0,0 +1,49 @@
+{ lib
+, go
+, buildGoModule
+, fetchFromGitHub
+, installShellFiles
+}:
+
+buildGoModule rec {
+  pname = "alertmanager";
+  version = "0.27.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "prometheus";
+    repo = "alertmanager";
+    hash = "sha256-soE2D/PLesV1+Kif9myB54a9zIFIa94i0BrmywJPTbI=";
+  };
+
+  vendorHash = "sha256-zkHIdEdAy44iV2F929NB3ISuUbxdecaeZcsNQQGd06E=";
+
+  subPackages = [ "cmd/alertmanager" "cmd/amtool" ];
+
+  ldflags = let t = "github.com/prometheus/common/version"; in [
+    "-X ${t}.Version=${version}"
+    "-X ${t}.Revision=${src.rev}"
+    "-X ${t}.Branch=unknown"
+    "-X ${t}.BuildUser=nix@nixpkgs"
+    "-X ${t}.BuildDate=unknown"
+    "-X ${t}.GoVersion=${lib.getVersion go}"
+  ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    $out/bin/amtool --completion-script-bash > amtool.bash
+    installShellCompletion amtool.bash
+    $out/bin/amtool --completion-script-zsh > amtool.zsh
+    installShellCompletion amtool.zsh
+  '';
+
+  meta = with lib; {
+    description = "Alert dispatcher for the Prometheus monitoring system";
+    homepage = "https://github.com/prometheus/alertmanager";
+    changelog = "https://github.com/prometheus/alertmanager/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley fpletz globin Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/apcupsd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/apcupsd-exporter.nix
new file mode 100644
index 000000000000..5bb98203fa2d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/apcupsd-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "apcupsd-exporter";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "mdlayher";
+    repo = "apcupsd_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-c0LsUqpJbmWQmbmSGdEy7Bbk20my6iWNLeqtU5BjYlw=";
+  };
+
+  vendorHash = "sha256-bvLwHLviIAGmxYY1O0wFDWAMginEUklicrbjIbbPuUw=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) apcupsd; };
+
+  meta = with lib; {
+    description = "Provides a Prometheus exporter for the apcupsd Network Information Server (NIS)";
+    homepage = "https://github.com/mdlayher/apcupsd_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ _1000101 mdlayher ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/artifactory-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/artifactory-exporter.nix
new file mode 100644
index 000000000000..f77257745872
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/artifactory-exporter.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "artifactory_exporter";
+  version = "1.13.2";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    owner = "peimanja";
+    repo = pname;
+    rev = rev;
+    hash = "sha256-m5ToXry1LgjWSTU9bjOtsgfVF8wKiKuTwCIC7jNGSKY=";
+  };
+
+  vendorHash = "sha256-ikWxTHmqHFWAReKMf6LFza/bhkcfxa4euXUixKPvcpQ=";
+
+  subPackages = [ "." ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${rev}"
+    "-X github.com/prometheus/common/version.Branch=master"
+    "-X github.com/prometheus/common/version.BuildDate=19700101-00:00:00"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) artifactory; };
+
+  meta = with lib; {
+    description = "JFrog Artifactory Prometheus Exporter";
+    homepage = "https://github.com/peimanja/artifactory_exporter";
+    changelog = "https://github.com/peimanja/artifactory_exporter/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lbpdt ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/atlas-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/atlas-exporter.nix
new file mode 100644
index 000000000000..ce40a93e66f8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/atlas-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "atlas-exporter";
+  version = "1.0.4";
+
+  src = fetchFromGitHub {
+    owner = "czerwonk";
+    repo = "atlas_exporter";
+    rev = version;
+    sha256 = "sha256-vhUhWO7fQpUHT5nyxbT8AylgUqDNZRSb+EGRNGZJ14E=";
+  };
+
+  vendorHash = "sha256-tR+OHxj/97AixuAp0Kx9xQsKPAxpvF6hDha5BgMBha0=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for RIPE Atlas measurement results ";
+    homepage = "https://github.com/czerwonk/atlas_exporter";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ clerie ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/aws-s3-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/aws-s3-exporter.nix
new file mode 100644
index 000000000000..dd0ea4ec5ec4
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/aws-s3-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "aws-s3-exporter";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "ribbybibby";
+    repo = "s3_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-dYkMCCAIlFDFOFUNJd4NvtAeJDTsHeJoH90b5pSGlQE=";
+  };
+
+  vendorHash = null;
+
+  ldflags = [ "-s" "-w" ];
+
+  meta = with lib; {
+    description = "Exports Prometheus metrics about S3 buckets and objects";
+    homepage = "https://github.com/ribbybibby/s3_exporter";
+    license = licenses.asl20;
+    maintainers = [ maintainers.mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/bind-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/bind-exporter.nix
new file mode 100644
index 000000000000..1ee84e5e703a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/bind-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "bind_exporter";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "prometheus-community";
+    repo = "bind_exporter";
+    sha256 = "sha256-x/XGatlXCKo9cI92JzFItApsjuZAfZX+8IZRpy7PVUo=";
+  };
+
+  vendorHash = "sha256-f0ei/zotOj5ebURAOWUox/7J3jS2abQ5UgjninI9nRk=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) bind; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for bind9 server";
+    homepage = "https://github.com/digitalocean/bind_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rtreffer ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/bird-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/bird-exporter.nix
new file mode 100644
index 000000000000..f61e400d860f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/bird-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "bird-exporter";
+  version = "1.4.3";
+
+  src = fetchFromGitHub {
+    owner = "czerwonk";
+    repo = "bird_exporter";
+    rev = version;
+    sha256 = "sha256-aClwJ+J83iuZbfNP+Y1vKEjBULD5wh/R3TMceCccacc=";
+  };
+
+  vendorHash = "sha256-0EXRpehdpOYpq6H9udmNnQ24EucvAcPUKOlFSAAewbE=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) bird; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for the bird routing daemon";
+    homepage = "https://github.com/czerwonk/bird_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukegb ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/bitcoin-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/bitcoin-exporter.nix
new file mode 100644
index 000000000000..f2d50fe85014
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/bitcoin-exporter.nix
@@ -0,0 +1,42 @@
+{ lib, fetchFromGitHub, fetchpatch, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "bitcoin-prometheus-exporter";
+  version = "0.5.0";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "jvstein";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0l0j6dyb0vflh386z3g8srysay5sf47g5rg2f5xrkckv86rjr115";
+  };
+
+  patches = [
+    # remove after update to new release
+    (fetchpatch {
+      name = "configurable-listening-address.patch";
+      url = "https://patch-diff.githubusercontent.com/raw/jvstein/bitcoin-prometheus-exporter/pull/11.patch";
+      sha256 = "0a2l8aqgprc1d5k8yg1gisn6imh9hzg6j0irid3pjvp5i5dcnhyq";
+    })
+  ];
+
+  propagatedBuildInputs = with python3Packages; [ prometheus-client bitcoinlib riprova ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bitcoind-monitor.py $out/bin/
+
+    mkdir -p $out/share/${pname}
+    cp -r dashboard README.md $out/share/${pname}/
+  '';
+
+  meta = with lib; {
+    description = "Prometheus exporter for Bitcoin Core nodes";
+    homepage = "https://github.com/jvstein/bitcoin-prometheus-exporter";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ mmilata ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix
new file mode 100644
index 000000000000..8025cffca843
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix
@@ -0,0 +1,38 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "blackbox_exporter";
+  version = "0.24.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "prometheus";
+    repo = "blackbox_exporter";
+    sha256 = "sha256-eoXSBliHadRGPT6+K75p2tEjKHKXmLz4svE59yQAEuM=";
+  };
+
+  vendorHash = "sha256-yhgmJaWdYR5w5A8MVnHQS1yF6sTIMd1TOiesV4mc0Gs=";
+
+  # dns-lookup is performed for the tests
+  doCheck = false;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) blackbox; };
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${rev}"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  meta = with lib; {
+    description = "Blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP and ICMP";
+    homepage = "https://github.com/prometheus/blackbox_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ globin fpletz willibutz Frostman ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/cloudflare-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/cloudflare-exporter.nix
new file mode 100644
index 000000000000..6d15188aaebe
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/cloudflare-exporter.nix
@@ -0,0 +1,23 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "cloudflare-exporter";
+  version = "0.0.14";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "lablabs";
+    repo = pname;
+    sha256 = "sha256-A7JnHx9yipTwv63287BqmGrJ3yQ21NhB1z7rrHe6Ok8=";
+  };
+
+  vendorHash = "sha256-B/+UTkoGAoJLMr+zdXXSC2CWGHx+Iu5E2qp4AA/nmHM=";
+
+  meta = with lib; {
+    description = "Prometheus Cloudflare Exporter";
+    homepage = "https://github.com/lablabs/cloudflare-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bbigras ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/collectd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/collectd-exporter.nix
new file mode 100644
index 000000000000..1ff0ad38f47a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/collectd-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "collectd-exporter";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "collectd_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-8oibunEHPtNdbhVgF3CL6D/xE7bR8hee6+D2IJMzaqY=";
+  };
+
+  vendorHash = "sha256-fQO2fiotqv18xewXVyh6sA4zx5ZNUR6mCebYenryrKI=";
+
+  ldflags = [ "-s" "-w" ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) collectd; };
+
+  meta = with lib; {
+    description = "Relay server for exporting metrics from collectd to Prometheus";
+    homepage = "https://github.com/prometheus/collectd_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/consul-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/consul-exporter.nix
new file mode 100644
index 000000000000..a365bda5202a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/consul-exporter.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "consul_exporter";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "consul_exporter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-3aPLpTV+xuotpBYmRDfU3ewRRlmf7VUdh/u9/SLQDeE=";
+  };
+
+  vendorHash = "sha256-fsST29HGwJVLVSoAr8tNukW81iJtpb/oypwp5cH7oLQ=";
+
+  ldflags = [
+    "-s"
+    "-w"
+  ];
+
+  meta = with lib; {
+    description = "Prometheus exporter for Consul metrics";
+    homepage = "https://github.com/prometheus/consul_exporter";
+    changelog = "https://github.com/prometheus/consul_exporter/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hectorj ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix
new file mode 100644
index 000000000000..c995d4036ae0
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, cudaPackages
+, dcgm
+, linuxPackages
+}:
+buildGoModule rec {
+  pname = "dcgm-exporter";
+
+  # The first portion of this version string corresponds to a compatible DCGM
+  # version.
+  version = "3.2.5-3.1.7"; # N.B: If you change this, update dcgm as well to the matching version.
+
+  src = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = pname;
+    rev = "refs/tags/${version}";
+    hash = "sha256-+Hviq+iu1LBcy2VwmCX5xOq1I/zevfydesVlrVorGOI=";
+  };
+
+  # Upgrade to go 1.17 during the vendoring FOD build because it fails otherwise.
+  overrideModAttrs = _: {
+    preBuild = ''
+      substituteInPlace go.mod --replace 'go 1.16' 'go 1.17'
+      go mod tidy
+    '';
+    postInstall = ''
+      cp go.mod "$out/go.mod"
+    '';
+  };
+
+  CGO_LDFLAGS = "-ldcgm";
+
+  buildInputs = [
+    dcgm
+  ];
+
+  # gonvml and go-dcgm do not work with ELF BIND_NOW hardening because not all
+  # symbols are available on startup.
+  hardeningDisable = [ "bindnow" ];
+
+  # Copy the modified go.mod we got from the vendoring process.
+  preBuild = ''
+    cp vendor/go.mod go.mod
+  '';
+
+  vendorHash = "sha256-Fjvx15e/psxoqoS6c6GhiQfe7g2aI40EmPR26xLhrzg=";
+
+  nativeBuildInputs = [
+    cudaPackages.autoAddOpenGLRunpathHook
+  ];
+
+  # Tests try to interact with running DCGM service.
+  doCheck = false;
+
+  postFixup = ''
+    patchelf --add-needed libnvidia-ml.so "$out/bin/dcgm-exporter"
+  '';
+
+  meta = with lib; {
+    description = "NVIDIA GPU metrics exporter for Prometheus leveraging DCGM";
+    homepage = "https://github.com/NVIDIA/dcgm-exporter";
+    license = licenses.asl20;
+    maintainers = teams.deshaw.members;
+    mainProgram = "dcgm-exporter";
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix
new file mode 100644
index 000000000000..b511faf42fb6
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix
@@ -0,0 +1,134 @@
+{ stdenv
+, lib
+, go
+, buildGoModule
+, fetchFromGitHub
+, fetchurl
+, nixosTests
+, enableAWS ? true
+, enableAzure ? true
+, enableConsul ? true
+, enableDigitalOcean ? true
+, enableDNS ? true
+, enableEureka ? true
+, enableGCE ? true
+, enableHetzner ? true
+, enableIONOS ? true
+, enableKubernetes ? true
+, enableLinode ? true
+, enableMarathon ? true
+, enableMoby ? true
+, enableNomad ? true
+, enableOpenstack ? true
+, enableOVHCloud ? true
+, enablePuppetDB ? true
+, enableScaleway ? true
+, enableTriton ? true
+, enableUyuni ? true
+, enableVultr ? true
+, enableXDS ? true
+, enableZookeeper ? true
+}:
+
+let
+  version = "2.49.1";
+  webUiStatic = fetchurl {
+    url = "https://github.com/prometheus/prometheus/releases/download/v${version}/prometheus-web-ui-${version}.tar.gz";
+    hash = "sha256-cHMzu7/WquRvbCUlAs4U6PrLP4PAigdYOyNbvxNoeIA=";
+  };
+in
+buildGoModule rec {
+  pname = "prometheus";
+  inherit version;
+
+  outputs = [ "out" "doc" "cli" ];
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "prometheus";
+    rev = "v${version}";
+    hash = "sha256-cqUyjRL+T7ARGcUWMCaeWMo7DR1gvPp08maNz9a3RG0=";
+  };
+
+  vendorHash = "sha256-fDT7YrnUfS93yseo+1mLrSGPBewm7CpcHPCz1kxM6Uo=";
+
+  excludedPackages = [ "documentation/prometheus-mixin" ];
+
+  postPatch = ''
+    tar -C web/ui -xzf ${webUiStatic}
+
+    patchShebangs scripts
+
+    # Enable only select service discovery to shrink binaries.
+    (
+      true # prevent bash syntax error when all plugins are disabled
+    ${lib.optionalString enableAWS          "echo - github.com/prometheus/prometheus/discovery/aws"}
+    ${lib.optionalString enableAzure        "echo - github.com/prometheus/prometheus/discovery/azure"}
+    ${lib.optionalString enableConsul       "echo - github.com/prometheus/prometheus/discovery/consul"}
+    ${lib.optionalString enableDigitalOcean "echo - github.com/prometheus/prometheus/discovery/digitalocean"}
+    ${lib.optionalString enableDNS          "echo - github.com/prometheus/prometheus/discovery/dns"}
+    ${lib.optionalString enableEureka       "echo - github.com/prometheus/prometheus/discovery/eureka"}
+    ${lib.optionalString enableGCE          "echo - github.com/prometheus/prometheus/discovery/gce"}
+    ${lib.optionalString enableHetzner      "echo - github.com/prometheus/prometheus/discovery/hetzner"}
+    ${lib.optionalString enableIONOS        "echo - github.com/prometheus/prometheus/discovery/ionos"}
+    ${lib.optionalString enableKubernetes   "echo - github.com/prometheus/prometheus/discovery/kubernetes"}
+    ${lib.optionalString enableLinode       "echo - github.com/prometheus/prometheus/discovery/linode"}
+    ${lib.optionalString enableMarathon     "echo - github.com/prometheus/prometheus/discovery/marathon"}
+    ${lib.optionalString enableMoby         "echo - github.com/prometheus/prometheus/discovery/moby"}
+    ${lib.optionalString enableNomad        "echo - github.com/prometheus/prometheus/discovery/nomad"}
+    ${lib.optionalString enableOpenstack    "echo - github.com/prometheus/prometheus/discovery/openstack"}
+    ${lib.optionalString enableOVHCloud     "echo - github.com/prometheus/prometheus/discovery/ovhcloud"}
+    ${lib.optionalString enablePuppetDB     "echo - github.com/prometheus/prometheus/discovery/puppetdb"}
+    ${lib.optionalString enableScaleway     "echo - github.com/prometheus/prometheus/discovery/scaleway"}
+    ${lib.optionalString enableTriton       "echo - github.com/prometheus/prometheus/discovery/triton"}
+    ${lib.optionalString enableUyuni        "echo - github.com/prometheus/prometheus/discovery/uyuni"}
+    ${lib.optionalString enableVultr        "echo - github.com/prometheus/prometheus/discovery/vultr"}
+    ${lib.optionalString enableXDS          "echo - github.com/prometheus/prometheus/discovery/xds"}
+    ${lib.optionalString enableZookeeper    "echo - github.com/prometheus/prometheus/discovery/zookeeper"}
+    ) > plugins.yml
+  '';
+
+  preBuild = ''
+    if [[ -d vendor ]]; then GOARCH= make -o assets assets-compress plugins; fi
+  '';
+
+  tags = [ "builtinassets" ];
+
+  ldflags =
+    let
+      t = "github.com/prometheus/common/version";
+    in
+    [
+      "-s"
+      "-w"
+      "-X ${t}.Version=${version}"
+      "-X ${t}.Revision=unknown"
+      "-X ${t}.Branch=unknown"
+      "-X ${t}.BuildUser=nix@nixpkgs"
+      "-X ${t}.BuildDate=unknown"
+      "-X ${t}.GoVersion=${lib.getVersion go}"
+    ];
+
+  preInstall = ''
+    mkdir -p "$out/share/doc/prometheus" "$out/etc/prometheus"
+    cp -a $src/documentation/* $out/share/doc/prometheus
+    cp -a $src/console_libraries $src/consoles $out/etc/prometheus
+  '';
+
+  postInstall = ''
+    moveToOutput bin/promtool $cli
+  '';
+
+  # https://hydra.nixos.org/build/130673870/nixlog/1
+  # Test mock data uses 64 bit data without an explicit (u)int64
+  doCheck = !(stdenv.isDarwin || stdenv.hostPlatform.parsed.cpu.bits < 64);
+
+  passthru.tests = { inherit (nixosTests) prometheus; };
+
+  meta = with lib; {
+    description = "Service monitoring system and time series database";
+    homepage = "https://prometheus.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fpletz willibutz Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dmarc-metrics-exporter/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dmarc-metrics-exporter/default.nix
new file mode 100644
index 000000000000..2b2c5354ca1c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dmarc-metrics-exporter/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "dmarc-metrics-exporter";
+  version = "1.0.0";
+
+  disabled = python3.pythonOlder "3.8";
+
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jgosmann";
+    repo = "dmarc-metrics-exporter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pT2GGoNPCHBZZbbBE93cJjgogBNcdpvLmrVakNMu6tY=";
+  };
+
+  pythonRelaxDeps = true;
+
+  nativeBuildInputs = with python3.pkgs; [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    bite-parser
+    dataclasses-serialization
+    prometheus-client
+    structlog
+    uvicorn
+    xsdata
+  ]
+  ++ uvicorn.optional-dependencies.standard;
+
+  nativeCheckInputs = with python3.pkgs; [
+    aiohttp
+    pytest-asyncio
+    pytestCheckHook
+    requests
+  ];
+
+  disabledTestPaths = [
+    # require networking
+    "dmarc_metrics_exporter/tests/test_e2e.py"
+    "dmarc_metrics_exporter/tests/test_imap_client.py"
+    "dmarc_metrics_exporter/tests/test_imap_queue.py"
+  ];
+
+  pythonImportsCheck = [ "dmarc_metrics_exporter" ];
+
+  meta = {
+    description = "Export Prometheus metrics from DMARC reports";
+    homepage = "https://github.com/jgosmann/dmarc-metrics-exporter";
+    changelog = "https://github.com/jgosmann/dmarc-metrics-exporter/blob/v${version}/CHANGELOG.rst";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dnsmasq-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dnsmasq-exporter.nix
new file mode 100644
index 000000000000..f6af24264fe9
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dnsmasq-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "dnsmasq_exporter";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "dnsmasq_exporter";
+    rev = "v${version}";
+    hash = "sha256-8r5q5imI+MxnU7+TFqdIc+JRX0zZY4pmUoAGlFqs8cQ=";
+  };
+
+  vendorHash = "sha256-dEM0mn3JJl0M6ImWmkuvwBSfGWkhpVvZE7GtC1BQF7c=";
+
+  doCheck = false;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) dnsmasq; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A dnsmasq exporter for Prometheus";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ willibutz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/domain-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/domain-exporter.nix
new file mode 100644
index 000000000000..5f5ce702cebc
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/domain-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, fetchpatch, nixosTests }:
+
+buildGoModule rec {
+  pname = "domain-exporter";
+  version = "1.23.0";
+
+  src = fetchFromGitHub {
+    owner = "caarlos0";
+    repo = "domain_exporter";
+    rev = "v${version}";
+    hash = "sha256-5GyDQkd8zXZ9TtauWfW9uW8xkgtEICFm6f4Q/jVqOBc=";
+  };
+
+  vendorHash = "sha256-EPpzrig40WXt5mo/vPTFjh+gYdFOlMknjNJHNChlQwk=";
+
+  doCheck = false; # needs internet connection
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) domain; };
+
+  meta = with lib; {
+    homepage = "https://github.com/caarlos0/domain_exporter";
+    description = "Exports the expiration time of your domains as prometheus metrics";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mmilata prusnak peterhoeg caarlos0 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter-deps.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter-deps.nix
new file mode 100644
index 000000000000..d94aad821485
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter-deps.nix
@@ -0,0 +1,102 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc567396460bf5acd36800cb10c49c";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "3a771d992973f24aa725d07868b467d1ddfceafb";
+      sha256 = "1l2lns4f5jabp61201sh88zf3b0q793w4zdgp9nll7mmfcxxjif3";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "4aa4cc277ae58d2fab6cfe51dd17df5dceaf457d";
+      sha256 = "009z6rpivyakgsxs0zkm94c9i7l65hcw2ljvah94wq3y6v6j47gs";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "0f2620f554cf5c8e281a2eb655a035f5a0f6dc90";
+      sha256 = "0lxngq1a8cnsy6dlr6gi8pjv3fir2wiw76qh075pa9g02h7ywhv3";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "b5bfa0eb2c8d46bd91dc58271e973c5f0bbebcfa";
+      sha256 = "1msxzkdgi0ing4ddmp0s4qrf267n6ylafw9mbz5yrr7spb1dgxgk";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f";
+      sha256 = "04psf81l9fjcwascsys428v03fx4fi894h7fhrj2vvcz723q57k0";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "c7de2306084e37d54b8be01f3541a8464345e9a5";
+      sha256 = "11dqfm2d0m4sjjgyrnayman96g59x2apmvvqby9qmww2qj2k83ig";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "05ee40e3a273f7245e8777337fc7b46e533a9a92";
+      sha256 = "0f6fnczxa42b9rys2h3l0m8fy3x5hrhaq707vq0lbx5fcylw8lis";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "947dcec5ba9c011838740e680966fd7087a71d0d";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter.nix
new file mode 100644
index 000000000000..ff7156360a9c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dovecot-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoPackage, fetchFromGitHub, nixosTests }:
+
+buildGoPackage rec {
+  pname = "dovecot_exporter";
+  version = "0.1.3";
+
+  goPackagePath = "github.com/kumina/dovecot_exporter";
+
+  src = fetchFromGitHub {
+    owner = "kumina";
+    repo = "dovecot_exporter";
+    rev = version;
+    sha256 = "1lnxnnm45fhcyv40arcvpiiibwdnxdwhkf8sbjpifx1wspvphcj9";
+  };
+
+  goDeps = ./dovecot-exporter-deps.nix;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) dovecot; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Prometheus metrics exporter for Dovecot";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ willibutz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix
new file mode 100644
index 000000000000..821baf91417c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "exportarr";
+  version = "1.6.2";
+
+  src = fetchFromGitHub {
+    owner = "onedr0p";
+    repo = "exportarr";
+    rev = "v${version}";
+    hash = "sha256-Eacu8NeAAQqztzVpBhW1UeKQU+FBEJcx5+mcaByQid8=";
+  };
+
+  vendorHash = "sha256-lizPm/3hxKt7ZxKkhbwsj1nL8bWmE90QqRGxTqMSMAw=";
+
+  subPackages = [ "cmd/exportarr" ];
+
+  CGO_ENABLE = 0;
+
+  ldflags = [ "-s" "-w" ];
+
+  tags = lib.optionals stdenv.isLinux [ "netgo" ];
+
+  preCheck = ''
+    # Run all tests.
+    unset subPackages
+  '';
+
+  meta = with lib; {
+    description = "AIO Prometheus Exporter for Sonarr, Radarr or Lidarr";
+    homepage = "https://github.com/onedr0p/exportarr";
+    changelog = "https://github.com/onedr0p/exportarr/releases/tag/${src.rev}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ azahi ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/fastly-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
new file mode 100644
index 000000000000..ba2d5217e344
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "fastly-exporter";
+  version = "7.6.1";
+
+  src = fetchFromGitHub {
+    owner = "fastly";
+    repo = "fastly-exporter";
+    rev = "v${version}";
+    hash = "sha256-JUbjWAJ70iq0RCr6U2thbtZ3nmCic9wGtSf2ArRy4uA=";
+  };
+
+  vendorHash = "sha256-lEaMhJL/sKNOXx0W+QHMG4QUUE6Pc4AqulhgyCMQQNY=";
+
+  passthru.tests = {
+    inherit (nixosTests.prometheus-exporters) fastly;
+  };
+
+  meta = with lib; {
+    description = "Prometheus exporter for the Fastly Real-time Analytics API";
+    homepage = "https://github.com/fastly/fastly-exporter";
+    license = licenses.asl20;
+    maintainers = teams.deshaw.members;
+    mainProgram = "fastly-exporter";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/flow-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/flow-exporter.nix
new file mode 100644
index 000000000000..1b9f05dae3e2
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/flow-exporter.nix
@@ -0,0 +1,23 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "flow-exporter";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "neptune-networks";
+    repo = pname;
+    sha256 = "sha256-6FqupoYWRvex7XhM7ly8f7ICnuS9JvCRIVEBIJe+64k=";
+  };
+
+  vendorHash = "sha256-2raOUOPiMUMydIsfSsnwUAAiM7WyMio1NgL1EoADr2s=";
+
+  meta = with lib; {
+    description = "Export network flows from kafka to Prometheus";
+    homepage = "https://github.com/neptune-networks/flow-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kloenk ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/fritzbox-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/fritzbox-exporter.nix
new file mode 100644
index 000000000000..99d306f9710d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/fritzbox-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "fritzbox-exporter";
+  version = "unstable-2021-04-13";
+
+  src = fetchFromGitHub {
+    rev = "fd36539bd7db191b3734e17934b5f1e78e4e9829";
+    owner = "mxschmitt";
+    repo = "fritzbox_exporter";
+    hash = "sha256-NtxgOGoFZjvNCn+alZF9Ngen4Z0nllR/NTgY5ixrL3E=";
+  };
+
+  vendorHash = "sha256-VhQAEVxRJjIzFP67LUKhfGxdUbTQB7UCK8/JKwpoy0w=";
+
+  subPackages = [ "cmd/exporter" ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) fritzbox; };
+
+  meta = with lib; {
+    description = "Prometheus Exporter for FRITZ!Box (TR64 and UPnP)";
+    homepage = "https://github.com/mxschmitt/fritzbox_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bachp flokli sbruder ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix
new file mode 100644
index 000000000000..ddcc080983df
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "gitlab-ci-pipelines-exporter";
+  version = "0.5.6";
+
+  src = fetchFromGitHub {
+    owner = "mvisonneau";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-SbFaB808Xa7XvHR8ruu9wADVPUVwe5ogA+L+PSYb7kQ=";
+  };
+
+  subPackages = [ "cmd/${pname}" ];
+
+  ldflags = [
+    "-X main.version=v${version}"
+  ];
+
+  vendorHash = "sha256-qZ9Ph8YZBBGS3dFlk3zTynU9WuRUHl2fVSPtd7hUB8E=";
+  doCheck = true;
+
+  meta = with lib; {
+    description = "Prometheus / OpenMetrics exporter for GitLab CI pipelines insights";
+    homepage = "https://github.com/mvisonneau/gitlab-ci-pipelines-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mmahut mvisonneau ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/graphite-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/graphite-exporter.nix
new file mode 100644
index 000000000000..3c27d018d781
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/graphite-exporter.nix
@@ -0,0 +1,36 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "graphite-exporter";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "graphite_exporter";
+    rev = "v${version}";
+    hash = "sha256-2u8grG5n0XkBS6zNxYrPyL+HP5/jEe/bXLt/1l759o4=";
+  };
+
+  vendorHash = "sha256-wt2eDCNZAss3zSqvXeKTlsrPfj8pMXKWa3Yb33uuW0M=";
+
+  preCheck = let
+    skippedTests = [
+      "TestBacktracking"
+      "TestInconsistentLabelsE2E"
+      "TestIssue111"
+      "TestIssue61"
+      "TestIssue90"
+    ];
+  in ''
+    buildFlagsArray+=("-run" "[^(${builtins.concatStringsSep "|" skippedTests})]")
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) graphite; };
+
+  meta = {
+    description = "An exporter for metrics exported in the Graphite plaintext protocol";
+    homepage = "https://github.com/prometheus/graphite_exporter";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.misterio77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
new file mode 100644
index 000000000000..aa558bc8c9fd
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "haproxy_exporter";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "haproxy_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-hpZnMvHAAEbvzASK3OgfG34AhPkCdRM7eOm15PRemkA=";
+  };
+
+  vendorHash = "sha256-s9UVtV8N2SJ1ik864P6p2hPXJ2jstFY/XnWt9fuCDo0=";
+
+  ldflags = [ "-s" "-w" ];
+
+  meta = with lib; {
+    description = "HAProxy Exporter for the Prometheus monitoring system";
+    homepage = "https://github.com/prometheus/haproxy_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter.nix
new file mode 100644
index 000000000000..3c1a0066be8a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter.nix
@@ -0,0 +1,30 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "idrac_exporter";
+  version = "unstable-2023-06-29";
+
+  src = fetchFromGitHub {
+    owner = "mrlhansen";
+    repo = "idrac_exporter";
+    rev = "3b311e0e6d602fb0938267287f425f341fbf11da";
+    sha256 = "sha256-N8wSjQE25TCXg/+JTsvQk3fjTBgfXTiSGHwZWFDmFKc=";
+  };
+
+  vendorHash = "sha256-iNV4VrdQONq7LXwAc6AaUROHy8TmmloUAL8EmuPtF/o=";
+
+  patches = [ ./idrac-exporter/config-from-environment.patch ];
+
+  ldflags = [ "-s" "-w" ];
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) idrac; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Simple iDRAC exporter for Prometheus";
+    license = licenses.mit;
+    maintainers = with maintainers; [ codec ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter/config-from-environment.patch b/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter/config-from-environment.patch
new file mode 100644
index 000000000000..e3aa42480242
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/idrac-exporter/config-from-environment.patch
@@ -0,0 +1,100 @@
+diff --git a/internal/config/config.go b/internal/config/config.go
+index ba8f066..1c801cd 100644
+--- a/internal/config/config.go
++++ b/internal/config/config.go
+@@ -2,8 +2,11 @@ package config
+ 
+ import (
+ 	"encoding/base64"
++	"fmt"
+ 	"os"
++	"strconv"
+ 	"sync"
++
+ 	"github.com/mrlhansen/idrac_exporter/internal/logging"
+ 	"gopkg.in/yaml.v2"
+ )
+@@ -17,9 +20,9 @@ type HostConfig struct {
+ 
+ type RootConfig struct {
+ 	mutex         sync.Mutex
+-	Address       string                 `yaml:"address"`
+-	Port          uint                   `yaml:"port"`
+-	MetricsPrefix string                 `yaml:"metrics_prefix"`
++	Address       string `yaml:"address"`
++	Port          uint   `yaml:"port"`
++	MetricsPrefix string `yaml:"metrics_prefix"`
+ 	Collect       struct {
+ 		System  bool `yaml:"system"`
+ 		Sensors bool `yaml:"sensors"`
+@@ -28,9 +31,29 @@ type RootConfig struct {
+ 		Storage bool `yaml:"storage"`
+ 		Memory  bool `yaml:"memory"`
+ 	} `yaml:"metrics"`
+-	Timeout       uint                   `yaml:"timeout"`
+-	Retries       uint                   `yaml:"retries"`
+-	Hosts         map[string]*HostConfig `yaml:"hosts"`
++	Timeout uint                   `yaml:"timeout"`
++	Retries uint                   `yaml:"retries"`
++	Hosts   map[string]*HostConfig `yaml:"hosts"`
++}
++
++func getEnv(envvar string, defvalue string) string {
++	value := os.Getenv(envvar)
++	if len(value) == 0 {
++		return defvalue
++	}
++	return value
++}
++
++func getEnvUint(envvar string, defvalue uint) uint {
++	value, err := strconv.Atoi(getEnv(envvar, fmt.Sprint(defvalue)))
++	if err != nil {
++		logging.Fatalf("Failed parse integer value: %s", err)
++	}
++	if value == 0 {
++		return defvalue
++	}
++
++	return uint(value)
+ }
+ 
+ func (config *RootConfig) GetHostCfg(target string) *HostConfig {
+@@ -70,29 +93,29 @@ func ReadConfigFile(fileName string) {
+ 	}
+ 
+ 	if Config.Address == "" {
+-		Config.Address = "0.0.0.0"
++		Config.Address = getEnv("IDRAC_EXPORTER_LISTEN_ADDRESS", "0.0.0.0")
+ 	}
+ 
+ 	if Config.Port == 0 {
+-		Config.Port = 9348
++		Config.Port = getEnvUint("IDRAC_EXPORTER_LISTEN_PORT", 9348)
+ 	}
+ 
+ 	if Config.Timeout == 0 {
+-		Config.Timeout = 10
++		Config.Timeout = getEnvUint("IDRAC_EXPORTER_TIMEOUT", 10)
+ 	}
+ 
+ 	if Config.Retries == 0 {
+-		Config.Retries = 1
++		Config.Retries = getEnvUint("IDRAC_EXPORTER_RETRIES", 1)
++	}
++
++	if Config.MetricsPrefix == "" {
++		Config.MetricsPrefix = getEnv("IDRAC_EXPORTER_PREFIX", "idrac")
+ 	}
+ 
+ 	if len(Config.Hosts) == 0 {
+ 		parseError("missing section", "hosts")
+ 	}
+ 
+-	if Config.MetricsPrefix == "" {
+-		Config.MetricsPrefix = "idrac"
+-	}
+-
+ 	for k, v := range Config.Hosts {
+ 		if v.Username == "" {
+ 			parseError("missing username for host", k)
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/imap-mailstat-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/imap-mailstat-exporter.nix
new file mode 100644
index 000000000000..e603c2a8811d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/imap-mailstat-exporter.nix
@@ -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=";
+  };
+
+  vendorHash = "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;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix
new file mode 100644
index 000000000000..07ef8febf3de
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/influxdb-exporter.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "influxdb_exporter";
+  version = "0.11.5";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "prometheus";
+    repo = "influxdb_exporter";
+    hash = "sha256-5jKwUuM3JL0zzXFesXTUBNMkA7bhd37BhqxZ/RzG20Q=";
+  };
+
+  vendorHash = "sha256-VQ8MkzT8caPR1gpLXvNzWD5/pO0IKw8d+bT8gohAiJo=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${rev}"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) influxdb; };
+
+  meta = with lib; {
+    description = "Prometheus exporter that accepts InfluxDB metrics";
+    homepage = "https://github.com/prometheus/influxdb_exporter";
+    changelog = "https://github.com/prometheus/influxdb_exporter/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/ipmi-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/ipmi-exporter.nix
new file mode 100644
index 000000000000..1b1ac3c62420
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/ipmi-exporter.nix
@@ -0,0 +1,41 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests, makeWrapper, freeipmi }:
+
+buildGoModule rec {
+  pname = "ipmi_exporter";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = "ipmi_exporter";
+    rev = "v${version}";
+    hash = "sha256-ZF5mBjq+IhSQrQ1dUfHlfyUMK2dkpZ5gu9djPkUYvRQ=";
+  };
+
+  vendorHash = "sha256-q5MFAvFCrr24b1VO0Z03C08CGd+0pUerXZEKiu4r7cE=";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/ipmi_exporter --prefix PATH : ${lib.makeBinPath [ freeipmi ]}
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) ipmi; };
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=0000000"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  meta = with lib; {
+    description = "An IPMI exporter for Prometheus";
+    homepage = "https://github.com/prometheus-community/ipmi_exporter";
+    changelog = "https://github.com/prometheus-community/ipmi_exporter/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ snaar ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix
new file mode 100644
index 000000000000..5b90c26eed7e
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchgit, nixosTests }:
+
+buildGoModule rec {
+  pname = "jitsiexporter";
+  version = "0.2.18";
+
+  src = fetchgit {
+    url = "https://git.xsfx.dev/prometheus/jitsiexporter";
+    rev = "v${version}";
+    sha256 = "1cf46wp96d9dwlwlffcgbcr0v3xxxfdv6il0zqkm2i7cfsfw0skf";
+  };
+
+  vendorHash = null;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) jitsi; };
+
+  meta = with lib; {
+    description = "Export Jitsi Videobridge metrics to Prometheus";
+    homepage = "https://git.xsfx.dev/prometheus/jitsiexporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/jmx-httpserver.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/jmx-httpserver.nix
new file mode 100644
index 000000000000..cf180de54a70
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/jmx-httpserver.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "jmx-prometheus-httpserver";
+  version = "0.15.0";
+
+  jarName = "jmx_prometheus_httpserver-${version}-jar-with-dependencies.jar";
+
+  src = fetchurl {
+    url = "mirror://maven/io/prometheus/jmx/jmx_prometheus_httpserver/${version}/${jarName}";
+    sha256 = "0fr3svn8kjp7bq1wzbkvv5awylwn8b01bngj04zvk7fpzqpgs7mz";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out/libexec
+    mkdir -p $out/bin
+    cp $src $out/libexec/$jarName
+    makeWrapper "${jre}/bin/java" $out/bin/jmx_prometheus_httpserver --add-flags "-jar $out/libexec/$jarName"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/prometheus/jmx_exporter";
+    description = "A process for exposing JMX Beans via HTTP for Prometheus consumption";
+    sourceProvenance = with sourceTypes; [ binaryBytecode ];
+    license = licenses.asl20;
+    maintainers = [ maintainers.offline ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/json-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/json-exporter.nix
new file mode 100644
index 000000000000..ad0e7a49aa3c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/json-exporter.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "prometheus-json-exporter";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = "json_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-5tFhk62ewRE87lxgVM2bytV9GbXT5iAwbJqklohYDvM=";
+  };
+
+  vendorHash = "sha256-Hij3lh92OCH+sTrzNl/KkjLAhPGffzzmxhPDO2wG0gA=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) json; };
+
+  meta = with lib; {
+    description = "A prometheus exporter which scrapes remote JSON by JSONPath";
+    homepage = "https://github.com/prometheus-community/json_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ willibutz ];
+    mainProgram = "json_exporter";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/junos-czerwonk-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/junos-czerwonk-exporter.nix
new file mode 100644
index 000000000000..2b50c7850702
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/junos-czerwonk-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "junos-czerwonk-exporter";
+  version = "0.12.2";
+
+  src = fetchFromGitHub {
+    owner = "czerwonk";
+    repo = "junos_exporter";
+    rev = version;
+    sha256 = "sha256-KdVyRddAr2gqiFyIGBfWbi4DHAaiey4p4OBFND/2u7U=";
+  };
+
+  vendorHash = "sha256-fytDr56ZhhO5u6u9CRIEKXGqgnzntSVqEVItibpLyPM=";
+
+  meta = with lib; {
+    description = "Exporter for metrics from devices running JunOS";
+    homepage = "https://github.com/czerwonk/junos_exporter";
+    license = licenses.mit;
+    maintainers = teams.wdz.members;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/kea-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/kea-exporter.nix
new file mode 100644
index 000000000000..572fed8a99d9
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/kea-exporter.nix
@@ -0,0 +1,37 @@
+{ lib, python3Packages, fetchPypi, nixosTests }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "kea-exporter";
+  version = "0.5.1";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-rNGA5XEx9xVUP1SeDPgXcaqgDhgX6JFhRX9GM454P5A=";
+  };
+
+  nativeBuildInputs = with python3Packages; [
+    pdm-pep517
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    click
+    prometheus-client
+  ];
+
+  checkPhase = ''
+    $out/bin/kea-exporter --help > /dev/null
+    $out/bin/kea-exporter --version | grep -q ${version}
+  '';
+
+  passthru.tests = {
+    inherit (nixosTests.prometheus-exporters) kea;
+  };
+
+  meta = with lib; {
+    description = "Export Kea Metrics in the Prometheus Exposition Format";
+    homepage = "https://github.com/mweinelt/kea-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/keylight-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/keylight-exporter.nix
new file mode 100644
index 000000000000..d2c816c7433a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/keylight-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "keylight-exporter";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "mdlayher";
+    repo = "keylight_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-yI1mmEb5SP2lbP37CpPxYITJL/nvd/mIwxB0RIQRe4I=";
+  };
+
+  vendorHash = "sha256-0QSsGgokErRNIHQIjZQn5t1dvc306uZck8uLSgjcrck=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) keylight; };
+
+  meta = with lib; {
+    homepage = "https://github.com/mdlayher/keylight_exporter";
+    description = "Prometheus exporter for Elgato Key Light devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mdlayher ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/knot-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/knot-exporter.nix
new file mode 100644
index 000000000000..d51d9bd3f79c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/knot-exporter.nix
@@ -0,0 +1,41 @@
+{ lib
+, python3
+, fetchPypi
+, nixosTests
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "knot-exporter";
+  version = "3.3.4";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "knot_exporter";
+    inherit version;
+    hash = "sha256-jZNNJiJxq3pNSZFwu2UEHhrA0odIDY0UO+d4PJII1ZI=";
+  };
+
+  nativeBuildInputs = [
+    python3.pkgs.hatchling
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    libknot
+    prometheus-client
+    psutil
+  ];
+
+  pythonImportsCheck = [
+    "knot_exporter"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) knot; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for Knot DNS";
+    homepage = "https://gitlab.nic.cz/knot/knot-dns/-/tree/master/python/knot_exporter";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ ma27 hexa ];
+    mainProgram = "knot-exporter";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/kthxbye.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/kthxbye.nix
new file mode 100644
index 000000000000..897a58926d34
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/kthxbye.nix
@@ -0,0 +1,39 @@
+{ pkgs
+, lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "kthxbye";
+  version = "0.16";
+
+  src = fetchFromGitHub rec {
+    owner = "prymitive";
+    repo = "kthxbye";
+    rev = "v${version}";
+    hash = "sha256-B6AgD79q0kA67iC9pIfv8PH8xejx2srpRccdds1GsZo=";
+  };
+
+  vendorHash = "sha256-BS9+2w18tvrgmPzRMP0XyUlyPAR9AJMLXUd3GYEJr8E=";
+
+  buildPhase = ''
+    make -j$NIX_BUILD_CORES
+  '';
+
+  installPhase = ''
+    install -Dm755 ./kthxbye -t $out/bin
+  '';
+
+  passthru.tests = {
+    kthxbye = nixosTests.kthxbye;
+  };
+
+  meta = with lib; {
+    description = "Prometheus Alertmanager alert acknowledgement management daemon";
+    homepage = "https://github.com/prymitive/kthxbye";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ nukaduka ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/lnd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/lnd-exporter.nix
new file mode 100644
index 000000000000..e66ab8852f1d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/lnd-exporter.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "lndmon";
+  version = "0.2.7";
+
+  src = fetchFromGitHub {
+    owner = "lightninglabs";
+    repo = "lndmon";
+    rev = "v${version}";
+    hash = "sha256-j9T60J7n9sya9/nN0Y6wsPDXN2h35pXxMdadsOkAMWI=";
+  };
+
+  vendorHash = "sha256-h9+/BOy1KFiqUUV35M548fDKFC3Q5mBaANuD7t1rpp8=";
+
+  # Irrelevant tools dependencies.
+  excludedPackages = [ "./tools" ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) lnd; };
+
+  meta = with lib; {
+    homepage = "https://github.com/lightninglabs/lndmon";
+    description = "Prometheus exporter for lnd (Lightning Network Daemon)";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mmilata ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/mail-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/mail-exporter.nix
new file mode 100644
index 000000000000..ae13becd0aed
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/mail-exporter.nix
@@ -0,0 +1,32 @@
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles, nixosTests }:
+
+buildGoModule {
+  pname = "mailexporter";
+  version = "2020-07-16";
+
+  src = fetchFromGitHub {
+    owner = "cherti";
+    repo = "mailexporter";
+    rev = "f5a552c736ac40ccdc0110d2e9a71619c1cd6862";
+    hash = "sha256-P7LZi2iXZJaY5AEJBeAVszq/DN9SFxNfeQaflnF6+ng=";
+  };
+
+  vendorHash = "sha256-QOOf00uCdC8fl7V/+Q8X90yQ7xc0Tb6M9dXisdGEisM=";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    installManPage $src/man/mailexporter.1
+    installManPage $src/man/mailexporter.conf.5
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) mail; };
+
+  meta = with lib; {
+    description = "Export Prometheus-style metrics about mail server functionality";
+    homepage = "https://github.com/cherti/mailexporter";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ willibutz globin ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/mikrotik-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/mikrotik-exporter.nix
new file mode 100644
index 000000000000..431b029db9f3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/mikrotik-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "mikrotik-exporter-unstable";
+  version = "2021-08-10";
+
+  src = fetchFromGitHub {
+    owner = "nshttpd";
+    repo = "mikrotik-exporter";
+    rev = "4bfa7adfef500ff621a677adfab1f7010af920d1";
+    hash = "sha256-xmQTFx2BFBiKxRgfgGSG8h8nb18uviCAORS8VIILFu8=";
+  };
+
+  vendorHash = "sha256-rRIQo+367nHdtgfisBka0Yn6f4P75Mm3Ead4CscnRCw=";
+
+  doCheck = false;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) mikrotik; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Prometheus MikroTik device(s) exporter";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ mmilata ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/default.nix
new file mode 100644
index 000000000000..93e9bca3283d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoPackage, fetchFromGitHub, fetchpatch }:
+
+buildGoPackage rec {
+  pname = "minio-exporter";
+  version = "0.2.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/joe-pll/minio-exporter";
+
+  src= fetchFromGitHub {
+    inherit rev;
+    owner = "joe-pll";
+    repo = "minio-exporter";
+    sha256 = "1my3ii5s479appiapw8gjzkq1pk62fl7d7if8ljvdj6qw4man6aa";
+  };
+
+  # Required to make 0.2.0 build against latest dependencies
+  # TODO: Remove on update to 0.3.0
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/joe-pll/minio-exporter/commit/50ab89d42322dc3e2696326a9ae4d3f951f646de.patch";
+      sha256 = "0aiixhvb4x8c8abrlf1i4hmca9i6xd6b638a5vfkvawx0q7gxl97";
+    })
+  ];
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "A Prometheus exporter for Minio cloud storage server";
+    homepage = "https://github.com/joe-pll/minio-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bachp ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/deps.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/deps.nix
new file mode 100644
index 000000000000..1993975e2bfa
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/minio-exporter/deps.nix
@@ -0,0 +1,174 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc567396460bf5acd36800cb10c49c";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9";
+      sha256 = "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev = "32e4c1e6bc4e7d0d8451aa6b75200d19e37a536a";
+      sha256 = "0mhgxw5q6b0pryhikx3k4wby7g32rwjjljzihi47lwn34kw5y1qn";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "1e59b77b52bf8e4b449a57e6f79f21226d571845";
+      sha256 = "19bkh81wnp6njg3931wky6hsnnl2d1ig20vfjxpv450sd3k6yys8";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/minio-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio-go";
+      rev = "d218e4cb1bfc13dcef0eb5c3e74507a35be0dd3a";
+      sha256 = "0d3am33xaavdffz791qi2s0vnkpjw9vlr5p5g4lw7h5vhmy1sjb4";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/minio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio";
+      rev = "bb73c84b104bc447eb603d63481cdc54b8ab3c83";
+      sha256 = "1gjkgdf59yxfr2a7pl3f7z3iid86zsd85xqxcv1s0d46v7j07iga";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "b8bc1bf767474819792c23f32d8286a45736f1c6";
+      sha256 = "13ry4lylalkh4g2vny9cxwvryslzyzwp9r92z0b10idhdq3wad1q";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "06bc6e01f4baf4ee783ffcd23abfcb0b0f9dfada";
+      sha256 = "0dvv21214sn702kc25y5l0gd9d11358976d3w31fgwx7456mjx26";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c";
+      sha256 = "19y4ywsivhpxj7ikf2j0gm9k3cmyw37qcbfi78n526jxcc7kw998";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "89604d197083d4781071d3c65855d24ecfb0a563";
+      sha256 = "169rdlaf2mk9z4fydz7ajmngyhmf3q1lk96yhvx46bn986x5xkyn";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "b15cd069a83443be3154b719d0cc9fe8117f09fb";
+      sha256 = "1cr45wg2m40bj2za8f32mq09rjlcnk5kfam0h0hr8wcb015k4wxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "d682213848ed68c0a260ca37d6dd5ace8423f5ba";
+      sha256 = "0nzyqwzx3k7nqfq8q7yv32gaf3ymq3bpwhkmw1hj2zakq5a93d8x";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "a6600008915114d9c087fad9f03d75087b1a74df";
+      sha256 = "099vyf8133bjwaqcv377d9akam3j5xwamwqrihmjhvzbvqs649yc";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "5ccada7d0a7ba9aeb5d3aca8d3501b4c2a509fec";
+      sha256 = "0bdwdxy2gz48icnh023r5fga3z4x6c8gry8jlfjqr5w12y3s281g";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "2c42eef0765b9837fbdab12011af7830f55f88f0";
+      sha256 = "0gj9nwryyzf9rn33gl3zm6rxvg1zhrhwi36akipqj37x4g86h3gz";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "e19ae1496984b1c655b8044a65c0300a3c878dd3";
+      sha256 = "1cvnnx8nwx5c7gr6ajs7sldhbqh52n7h6fsa3i21l2lhx6xrsh4w";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "947dcec5ba9c011838740e680966fd7087a71d0d";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/modemmanager-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/modemmanager-exporter.nix
new file mode 100644
index 000000000000..271be41aee97
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/modemmanager-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "modemmanager-exporter";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "mdlayher";
+    repo = "modemmanager_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-wQATmTjYsm1J2DicPryoa/jVpbLjXz+1TTQUH5yGV6w=";
+  };
+
+  vendorHash = "sha256-wGCRpFnt9bxc5Ygg6H1kI9sXB4mVFBdLeaahAFtvNbg=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) modemmanager; };
+
+  meta = with lib; {
+    homepage = "https://github.com/mdlayher/modemmanager_exporter";
+    description = "Prometheus exporter for ModemManager and its devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mdlayher ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/mongodb-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/mongodb-exporter.nix
new file mode 100644
index 000000000000..23db7d8e6f3f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/mongodb-exporter.nix
@@ -0,0 +1,39 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "mongodb_exporter";
+  version = "0.40.0";
+
+  src = fetchFromGitHub {
+    owner = "percona";
+    repo = "mongodb_exporter";
+    rev = "v${version}";
+    hash = "sha256-cWXfMi48aF06Prua3n4geG2yP1JzLlHq/xh1HmiJkT4=";
+  };
+
+  vendorHash = "sha256-69YBrDAEruWXaAqLfRVtqmZ0pop3r5cusePSV2Q1MXw=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X main.version=${version}"
+    "-X main.commit=${src.rev}"
+    "-X main.Branch=unknown"
+    "-X main.buildDate=unknown"
+  ];
+
+  subPackages = [ "." ];
+
+  # those check depends on docker;
+  # nixpkgs doesn't have mongodb application available;
+  doCheck = false;
+
+  meta = with lib;
+    {
+      description = "A Prometheus exporter for MongoDB including sharding, replication and storage engines";
+      homepage = "https://github.com/percona/mongodb_exporter";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ undefined-moe ];
+      mainProgram = "mongodb_exporter";
+    };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
new file mode 100644
index 000000000000..2e2bead90b35
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
@@ -0,0 +1,36 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "mysqld_exporter";
+  version = "0.15.1";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "mysqld_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-P7EoWa0BWuAr3sjtrUxzofwlklhRLpzwpGVe31hFo7Q=";
+  };
+
+  vendorHash = "sha256-GEL9sMwwdGqpklm4yKNqzSOM6I/JzZjg3+ZB2ix2M8w=";
+
+  ldflags = let t = "github.com/prometheus/common/version"; in [
+    "-s" "-w"
+    "-X ${t}.Version=${version}"
+    "-X ${t}.Revision=${src.rev}"
+    "-X ${t}.Branch=unknown"
+    "-X ${t}.BuildUser=nix@nixpkgs"
+    "-X ${t}.BuildDate=unknown"
+  ];
+
+  # skips tests with external dependencies, e.g. on mysqld
+  preCheck = ''
+    buildFlagsArray+="-short"
+  '';
+
+  meta = with lib; {
+    description = "Prometheus exporter for MySQL server metrics";
+    homepage = "https://github.com/prometheus/mysqld_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/nats-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/nats-exporter.nix
new file mode 100644
index 000000000000..b9b4fcc71f43
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/nats-exporter.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "prometheus-nats-exporter";
+  version = "0.14.0";
+
+  src = fetchFromGitHub {
+    owner = "nats-io";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-Zg4zmb0tvu7JPv9XS5Qd5o/ClnODSPz36isjUbFM1ec=";
+  };
+
+  vendorHash = "sha256-VygRE6YviSSIYpMbTEPndR6WUmLAZDwgvuJcwBuizck=";
+
+  preCheck = ''
+    # Fix `insecure algorithm SHA1-RSA` problem
+    export GODEBUG=x509sha1=1;
+  '';
+
+  meta = with lib; {
+    description = "Exporter for NATS metrics";
+    homepage = "https://github.com/nats-io/prometheus-nats-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bbigras ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix
new file mode 100644
index 000000000000..2ca413c20af8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix
@@ -0,0 +1,25 @@
+{ lib, fetchFromGitHub, buildGoModule, nixosTests, fetchpatch }:
+
+buildGoModule rec {
+  pname = "prometheus-nextcloud-exporter";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "xperimental";
+    repo = "nextcloud-exporter";
+    rev = "v${version}";
+    sha256 = "sha256-OiuhxawEpD29EhbzA9DYeJ1J1/uMQGgBTZR9m/5egHI=";
+  };
+
+  vendorHash = "sha256-QlMj4ATpJATlQAsrxIHG/1vrD5E/4brsda3BoGGzDgk=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) nextcloud; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for Nextcloud servers";
+    homepage = "https://github.com/xperimental/nextcloud-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ willibutz ];
+    mainProgram = "nextcloud-exporter";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/nginx-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/nginx-exporter.nix
new file mode 100644
index 000000000000..11862b58e004
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/nginx-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "nginx_exporter";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "nginxinc";
+    repo = "nginx-prometheus-exporter";
+    rev = "v${version}";
+    sha256 = "sha256-wLLHhbIA4jPgXtVIP6ycxgXfULODngPSpV3rZpJFSjI=";
+  };
+
+  vendorHash = "sha256-pMof9Wr6GrH5N97C4VNG2ELtZ6C6ruq5ylMwByotrP0=";
+
+  ldflags = [ "-s" "-w" "-X main.version=${version}" ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) nginx; };
+
+  meta = with lib; {
+    description = "NGINX Prometheus Exporter for NGINX and NGINX Plus";
+    homepage = "https://github.com/nginxinc/nginx-prometheus-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley fpletz willibutz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix
new file mode 100644
index 000000000000..8c8964ec093f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "nginxlog_exporter";
+  version = "1.11.0";
+
+  src = fetchFromGitHub {
+    owner = "martin-helmich";
+    repo = "prometheus-nginxlog-exporter";
+    rev = "v${version}";
+    sha256 = "sha256-UkXrVHHHZ9mEgsMUcHu+wI6NZFw4h3X4atDBjpBcz8E=";
+  };
+
+  vendorHash = "sha256-RzqfmP1d3zqageiGSr+CxSJQxAXmOKRCwj/7KO2f3EE=";
+
+  subPackages = [ "." ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) nginxlog; };
+
+  meta = with lib; {
+    description = "Export metrics from Nginx access log files to Prometheus";
+    homepage = "https://github.com/martin-helmich/prometheus-nginxlog-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/node-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/node-exporter.nix
new file mode 100644
index 000000000000..78d611cd3f92
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/node-exporter.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv, buildGoModule, fetchFromGitHub, nixosTests
+  # darwin
+  , CoreFoundation, IOKit
+}:
+
+buildGoModule rec {
+  pname = "node_exporter";
+  version = "1.7.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "prometheus";
+    repo = "node_exporter";
+    sha256 = "sha256-+KY/YXEqT/40QzODOk8lKAo0zMcNuiMvj6ippbJE9ho=";
+  };
+
+  vendorHash = "sha256-HrlzDupZP9+GxB58Lg62tvku1Sl2zo2iV0KnBNwkM58=";
+
+  # FIXME: tests fail due to read-only nix store
+  doCheck = false;
+
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreFoundation IOKit ];
+
+  excludedPackages = [ "docs/node-mixin" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${rev}"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) node; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for machine metrics";
+    homepage = "https://github.com/prometheus/node_exporter";
+    changelog = "https://github.com/prometheus/node_exporter/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley fpletz globin Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/nut-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/nut-exporter.nix
new file mode 100644
index 000000000000..7b1ea2087bed
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/nut-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "nut-exporter";
+  version = "3.1.1";
+
+  src = fetchFromGitHub {
+    owner = "DRuggeri";
+    repo = "nut_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-izD2Ks29/4/FBsZoH0raFzqb0DgPR8hXRYBZQEvET+s=";
+  };
+
+  vendorHash = "sha256-DGCNYklINPPzC7kCdEUS7TqVvg2SnKFqe0qHs5RSmzY=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for Network UPS Tools";
+    homepage = "https://github.com/DRuggeri/nut_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jhh ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/openldap-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/openldap-exporter.nix
new file mode 100644
index 000000000000..3d574d1bb93f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/openldap-exporter.nix
@@ -0,0 +1,30 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "openldap_exporter";
+  version = "2.2.2";
+
+  src = fetchFromGitHub {
+    owner = "tomcz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-1u+89odwV/lz34wtrK91lET2bOqkH6kRA7JCjzsmiEg=";
+  };
+
+  vendorHash = null;
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/tomcz/openldap_exporter.tag=v${version}"
+    "-X github.com/tomcz/openldap_exporter.commit=unknown"
+  ];
+
+
+  meta = with lib; {
+    homepage = "https://github.com/tomcz/openldap_exporter";
+    description = "Simple service that scrapes metrics from OpenLDAP and exports them via HTTP for Prometheus consumption";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix
new file mode 100644
index 000000000000..57f51e4997c5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "pgbouncer-exporter";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = "pgbouncer_exporter";
+    rev = "v${version}";
+    hash = "sha256-2N8FaGk6AU39j4q22B2Om5E7BeR7iw9drl3PTOBO2kg=";
+  };
+
+  vendorHash = "sha256-2aaUlOokqYkjMpcM12mU+O+N09/mDPlIrJ4Z1iXJAyk=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for PgBouncer";
+    homepage = "https://github.com/prometheus-community/pgbouncer_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ _1000101 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/php-fpm-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/php-fpm-exporter.nix
new file mode 100644
index 000000000000..e9ba97d1f3f7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/php-fpm-exporter.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, makeWrapper
+, installShellFiles
+, getent
+, nix-update-script
+, testers
+, prometheus-php-fpm-exporter
+}:
+
+buildGoModule rec {
+  pname = "php-fpm_exporter";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "hipages";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-ggrFnyEdGBoZVh4dHMw+7RUm8nJ1hJXo/fownO3wvzE=";
+  };
+
+  vendorHash = "sha256-OK36tHkBtosdfEWFPYMtlbzCkh5cF35NBWYyJrb9fwg= ";
+
+  nativeBuildInputs = [ makeWrapper installShellFiles ];
+
+  ldflags = [
+    "-X main.version=${version}"
+  ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/php-fpm_exporter" \
+      --prefix PATH ":" "${lib.makeBinPath [ getent ]}"
+  '';
+
+  postInstall = ''
+    installShellCompletion --cmd php-fpm_exporter \
+      --bash <($out/bin/php-fpm_exporter completion bash) \
+      --fish <($out/bin/php-fpm_exporter completion fish) \
+      --zsh <($out/bin/php-fpm_exporter completion zsh)
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+    tests = testers.testVersion {
+      inherit version;
+      package = prometheus-php-fpm-exporter;
+      command = "php-fpm_exporter version";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/hipages/php-fpm_exporter";
+    description = "A prometheus exporter for PHP-FPM.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ gaelreyrol ];
+    mainProgram = "php-fpm_exporter";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/pihole-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/pihole-exporter.nix
new file mode 100644
index 000000000000..2ceddeb8a4b2
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/pihole-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "pihole-exporter";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "eko";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-ZHeAp2++faqoxt+2uvtea2+xPST2sonuBJAhI6GZg1Y=";
+  };
+
+  vendorHash = "sha256-Wn4W7e8v/njvODA0znqtZsMRfcH6L6r5biAOwfyKUAU=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for PI-Hole's Raspberry PI ad blocker";
+    homepage = "https://github.com/eko/pihole-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/ping-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/ping-exporter.nix
new file mode 100644
index 000000000000..becbde065af3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/ping-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "ping-exporter";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "czerwonk";
+    repo = "ping_exporter";
+    rev = version;
+    hash = "sha256-ttlsz0yS4vIfQLTKQ/aiIm/vg6bwnbUlM1aku9RMXXU=";
+  };
+
+  vendorHash = "sha256-ZTrQNtpXTf+3oPv8zoVm6ZKWzAvRsAj96csoKJKxu3k=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for ICMP echo requests";
+    homepage = "https://github.com/czerwonk/ping_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nudelsalat ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/postfix-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/postfix-exporter.nix
new file mode 100644
index 000000000000..90439c9091fc
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/postfix-exporter.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, makeWrapper
+, nixosTests
+, systemd
+, withSystemdSupport ? true
+}:
+
+buildGoModule rec {
+  pname = "postfix_exporter";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "kumina";
+    repo = "postfix_exporter";
+    rev = version;
+    sha256 = "sha256-63ze51Qbjm+3CV1OFGFa9cS4ucZ+gMKaJyBF2b//CfM=";
+  };
+
+  vendorHash = "sha256-a4Lk4wh4mvXEjLgFksZIVVtbp+zTUyjtLVuk7vuot2k=";
+
+  ldflags = [ "-s" "-w" ];
+
+  nativeBuildInputs = lib.optionals withSystemdSupport [ makeWrapper ];
+  buildInputs = lib.optionals withSystemdSupport [ systemd ];
+  tags = lib.optionals (!withSystemdSupport) "nosystemd";
+
+  postInstall = lib.optionals withSystemdSupport ''
+    wrapProgram $out/bin/postfix_exporter \
+      --prefix LD_LIBRARY_PATH : "${lib.getLib systemd}/lib"
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) postfix; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A Prometheus exporter for Postfix";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ willibutz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/postgres-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/postgres-exporter.nix
new file mode 100644
index 000000000000..62f041b285ba
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/postgres-exporter.nix
@@ -0,0 +1,38 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "postgres_exporter";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = "postgres_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-fxVU2z1RGgI8AoKiJb+3LIEa1KDhPptmdP21/ESzmgw=";
+  };
+
+  vendorHash = "sha256-/AL9Qkcrp5Kvj2epJMuNrtwqBbyCy4P6oVGUfODXS/Q=";
+
+  ldflags =
+    let
+      t = "github.com/prometheus/common/version";
+    in
+    [ "-s" "-w"
+      "-X ${t}.Version=${version}"
+      "-X ${t}.Revision=unknown"
+      "-X ${t}.Branch=unknown"
+      "-X ${t}.BuildUser=nix@nixpkgs"
+      "-X ${t}.BuildDate=unknown"
+    ];
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) postgres; };
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A Prometheus exporter for PostgreSQL";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fpletz globin willibutz ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/process-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/process-exporter.nix
new file mode 100644
index 000000000000..684d624592f1
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/process-exporter.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "process-exporter";
+  version = "0.7.10";
+
+  src = fetchFromGitHub {
+    owner = "ncabatoff";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-TAgMA9IV3i8dpgOBDmnlt4iyGlmWN5Nj3BexXb5vzlc=";
+  };
+
+  vendorHash = "sha256-LAEnXJ3qShfCGjtsYAGyW5x/TTFQxQxXM0hebJrqiW4=";
+
+  postPatch = ''
+    substituteInPlace proc/read_test.go --replace /bin/cat cat
+  '';
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) process; };
+
+  meta = with lib; {
+    description = "Prometheus exporter that mines /proc to report on selected processes";
+    homepage = "https://github.com/ncabatoff/process-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ _1000101 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/prom2json.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/prom2json.nix
new file mode 100644
index 000000000000..c197bf6366c3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/prom2json.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "prom2json";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "prometheus";
+    repo = "prom2json";
+    sha256 = "sha256-VwJv2Y+YrlhLRx0lRPtHTzjvSz7GPfADCZibkQU6S1Y=";
+  };
+
+  vendorHash = "sha256-m9f3tCX21CMdcXcUcLFOxgs9oDR2Uaj5u22eJPDmpeE=";
+
+  meta = with lib; {
+    description = "Tool to scrape a Prometheus client and dump the result as JSON";
+    homepage = "https://github.com/prometheus/prom2json";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/promscale/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/promscale/default.nix
new file mode 100644
index 000000000000..821cab907850
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/promscale/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, promscale
+, testers
+}:
+
+buildGoModule rec {
+  pname = "promscale";
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner = "timescale";
+    repo = pname;
+    rev = version;
+    hash = "sha256-JizUI9XRzOEHF1kAblYQRYB11z9KWX7od3lPiRN+JNI=";
+  };
+
+  vendorHash = "sha256-lnyKsipr/f9W9LWLb2lizKGLvIbS3XnSlOH1u1B87OY=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/timescale/promscale/pkg/version.Version=${version}"
+    "-X github.com/timescale/promscale/pkg/version.CommitHash=${src.rev}"
+  ];
+  preBuild = ''
+    # Without this build fails with
+    # main module (github.com/timescale/promscale) does not contain package github.com/timescale/promscale/migration-tool/cmd/prom-migrator
+    rm -r migration-tool
+  '';
+  checkPhase = ''
+    runHook preCheck
+
+    # some checks requires access to a docker daemon
+    for pkg in $(getGoDirs test | grep -Ev 'testhelpers|upgrade_tests|end_to_end_tests|util'); do
+      buildGoDir test $checkFlags "$pkg"
+    done
+
+    runHook postCheck
+  '';
+
+  passthru.tests.version = testers.testVersion {
+    package = promscale;
+    command = "promscale -version";
+  };
+
+  meta = with lib; {
+    description = "An open-source analytical platform for Prometheus metrics";
+    homepage = "https://github.com/timescale/promscale";
+    changelog = "https://github.com/timescale/promscale/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ _0x4A6F anpin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/pushgateway.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/pushgateway.nix
new file mode 100644
index 000000000000..ea194bccffb3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/pushgateway.nix
@@ -0,0 +1,36 @@
+{ lib, buildGoModule, fetchFromGitHub, testers, prometheus-pushgateway }:
+
+buildGoModule rec {
+  pname = "pushgateway";
+  version = "1.7.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "pushgateway";
+    rev = "v${version}";
+    sha256 = "sha256-yiLVLt1+Klr34rF+rj+T9SWNCiYi//g/e/kfJJokkYk=";
+  };
+
+  vendorHash = "sha256-cbwTjjh4g5ISMuump6By0xmF3wKrdA3kToG7j8ZgHNs=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${version}"
+    "-X github.com/prometheus/common/version.Branch=${version}"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=19700101-00:00:00"
+  ];
+
+  passthru.tests.version = testers.testVersion {
+    package = prometheus-pushgateway;
+  };
+
+  meta = with lib; {
+    description = "Allows ephemeral and batch jobs to expose metrics to Prometheus";
+    homepage = "https://github.com/prometheus/pushgateway";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/pve-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/pve-exporter.nix
new file mode 100644
index 000000000000..82ca70bfef81
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/pve-exporter.nix
@@ -0,0 +1,39 @@
+{ lib
+, python3
+, fetchPypi
+, nixosTests
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "prometheus-pve-exporter";
+  version = "3.2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-E1hxYslVaMpoeCsTrw/7D0Ycq+GzMpJ0e6B4mEe/UJs=";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    prometheus-client
+    proxmoxer
+    pyyaml
+    requests
+    werkzeug
+    gunicorn
+  ];
+
+  doCheck = false;
+
+  pythonImportsCheck = [ "pve_exporter" ];
+
+  passthru.tests = {
+    inherit (nixosTests.prometheus-exporters) pve;
+  };
+
+  meta = with lib; {
+    description = "Exposes information gathered from Proxmox VE cluster for use by the Prometheus monitoring system";
+    homepage = "https://github.com/prometheus-pve/prometheus-pve-exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ nukaduka ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/rabbitmq-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/rabbitmq-exporter.nix
new file mode 100644
index 000000000000..213b2285c5e7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/rabbitmq-exporter.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "rabbitmq_exporter";
+  version = "1.0.0-RC19";
+
+  src = fetchFromGitHub {
+    owner = "kbudde";
+    repo = "rabbitmq_exporter";
+    rev = "v${version}";
+    hash = "sha256-31A0afmARdHxflR3n59DaqmLpTXws4OqROHfnc6cLKw=";
+  };
+
+  vendorHash = "sha256-ER0vK0xYUbQT3bqUosQMFT7HBycb3U8oI4Eak72myzs=";
+
+  ldflags = [ "-s" "-w" ];
+
+  checkFlags = [
+    # Disable flaky tests on Darwin
+    "-skip=TestWholeApp|TestExporter"
+  ];
+
+  meta = with lib; {
+    description = "Prometheus exporter for RabbitMQ";
+    homepage = "https://github.com/kbudde/rabbitmq_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter-deps.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter-deps.nix
new file mode 100644
index 000000000000..33747715fbef
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter-deps.nix
@@ -0,0 +1,390 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "fb15b899a751";
+      sha256 = "1vlasv4dgycydh5wx6jdcvz40zdv90zz1h7836z7lhsi2ymvii26";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "c3de453c63f4";
+      sha256 = "0js37zlgv37y61j4a2d46jh72xm5kxmpaiw0ya9v944bjpc386my";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.1";
+      sha256 = "17n4yygjxa6p499dj3yaqzfww2g7528165cl13haj97hlx94dgl7";
+    };
+  }
+  {
+    goPackagePath = "github.com/cespare/xxhash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cespare/xxhash";
+      rev = "v2.1.1";
+      sha256 = "0rl5rs8546zj1vzggv38w93wx0b5dvav7yy5hzxa8kw7iikv1cgr";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.9.0";
+      sha256 = "09038mnw705h7isbjp8dzgp2i04bp5rqkmifxvwc5xkh75s00qpw";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.4.0";
+      sha256 = "06smxc112xmixz78nyvk3b2hmc7wasf2sl5vxj1xz62kqcq9lzm9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-stack/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-stack/stack";
+      rev = "v1.8.0";
+      sha256 = "0wk25751ryyvxclyp8jdk5c3ar0cmfr8lrjb66qbg4808x66b96v";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.1.1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.4.0";
+      sha256 = "1fjvl5n77abxz5qsd4mgyvjq19x43c5bfvmq62mq3m5plx6zksc8";
+    };
+  }
+  {
+    goPackagePath = "github.com/gomodule/redigo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gomodule/redigo";
+      rev = "v1.8.2";
+      sha256 = "0wp37175n4lgkq234px9vx0c7mdx8sx3d45zky73az8zbabirwga";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.4.0";
+      sha256 = "1x5pvl3fb5sbyng7i34431xycnhmx8xx94gq2n19g6p0vz68z2v2";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev = "v1.0.0";
+      sha256 = "0qz439qvccm91w0mmjz4fqgx48clxdwagkvvx89cr43q1d4iry36";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.9";
+      sha256 = "0pkn2maymgl9v6vmq9q1si8xr5bbl88n6981y0lx09px6qxb29qx";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.3";
+      sha256 = "1yrsd4s8vhjnxhwbigirymz89dn6qfjnhn28i33vvvdgf96j6ypl";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v1.6.0";
+      sha256 = "0wwkx69in9dy5kzd3z6rrqf5by8cwl9r7r17fswcpx9rl3g61x1l";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "v0.2.0";
+      sha256 = "0jffnz94d6ff39fr96b5w8i8yk26pwnrfggzz8jhi8k0yihg2c9d";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "v0.9.1";
+      sha256 = "12pyywb02p7d30ccm41mwn69qsgqnsgv1w9jlqrrln2f1svnbqch";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "v0.0.11";
+      sha256 = "1msc8bfywsmrgr2ryqjdqwkxiz1ll08r3qgvaka2507z1wpcpj2c";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.6.0";
+      sha256 = "1zf9is1yxxnna0d1pyag2m9ziy3l27zb2j92p9msm1gx5jjrvzzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.5.1";
+      sha256 = "09r89m1wy4cjv2nps1ykp00qjpi0531r07q3s34hr7m6njk4srkl";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "c2843e01d9a2";
+      sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "d28f0bde5980";
+      sha256 = "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "cd5d95a43a6e";
+      sha256 = "1nqkyz2y1qvqcma52ijh02s8aiqmkfb95j08f6zcjhbga3ds6hds";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "1957bb5e6d1f";
+      sha256 = "0imqk4l9785rw7ddvywyf8zn7k3ga6f17ky8rmf8wrri7nknr03f";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/xerrors";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/xerrors";
+      rev = "9bdfabe68543";
+      sha256 = "1yjfi1bk9xb81lqn85nnm13zz725wazvrx3b50hx19qmwg7a4b0c";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/protobuf";
+      rev = "v1.21.0";
+      sha256 = "12bwln8z1lf9105gdp6ip0rx741i4yfz1520gxnp8861lh9wcl63";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "41f04d3bba15";
+      sha256 = "0vfk9czmlxmp6wndq8k17rhnjxal764mxfhrccza7nwlia760pjy";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.5";
+      sha256 = "08smz8dfyxp02ha74my9iszqa5qzgl3ksi28ilyp8lqipssiq6fg";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter.nix
new file mode 100644
index 000000000000..177537588d63
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/redis-exporter.nix
@@ -0,0 +1,33 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "redis_exporter";
+  version = "1.57.0";
+
+  src = fetchFromGitHub {
+    owner = "oliver006";
+    repo = "redis_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-M5Mv2gAQMR0j2zIX6OwePA9w7OtjJ0i2mR9I4BvUcXI=";
+  };
+
+  vendorHash = "sha256-32EjLEPeFsihdG83ru4SSf03F2XJGD8+tbO9ANaI1hs=";
+
+  ldflags = [
+    "-X main.BuildVersion=${version}"
+    "-X main.BuildCommitSha=unknown"
+    "-X main.BuildDate=unknown"
+  ];
+
+  # needs a redis server
+  doCheck = false;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) redis; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for Redis metrics";
+    homepage = "https://github.com/oliver006/redis_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ eskytthe srhb ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/rtl_433-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/rtl_433-exporter.nix
new file mode 100644
index 000000000000..40cde1c15a6f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/rtl_433-exporter.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub, bash, nixosTests }:
+
+buildGoModule rec {
+  pname = "rtl_433-exporter";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "mhansen";
+    repo = "rtl_433_prometheus";
+    rev = "v${version}";
+    hash = "sha256-ggtGi1gnpTLGvZnfAW9vyYyU7ELbTRNhXyCMotx+KKU=";
+  };
+
+  postPatch = "substituteInPlace rtl_433_prometheus.go --replace /bin/bash ${bash}/bin/bash";
+
+  vendorHash = "sha256-BsNB0OTwBUu9kK+lSN7EF8ZQH3kFx8P9h4QgcfCvtg4=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) rtl_433; };
+
+  meta = with lib; {
+    description = "Prometheus time-series DB exporter for rtl_433 433MHz radio packet decoder";
+    homepage = "https://github.com/mhansen/rtl_433_prometheus";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zopieux ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/sabnzbd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/sabnzbd-exporter.nix
new file mode 100644
index 000000000000..1412c4dff6c0
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/sabnzbd-exporter.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "sabnzbd_exporter";
+  version = "0.1.70";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "msroest";
+    repo = pname;
+    rev = version;
+    hash = "sha256-FkZAWIIlGX2VxRL3WS5J9lBgToQGbEQUqvf0xcdvynk=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ prometheus-client requests ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp sabnzbd_exporter.py $out/bin/
+
+    mkdir -p $out/share/${pname}
+    cp examples/* $out/share/${pname}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Prometheus exporter for sabnzbd";
+    homepage = "https://github.com/msroest/sabnzbd_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fugi ];
+    platforms = platforms.all;
+    mainProgram = "sabnzbd_exporter.py";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/sachet.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/sachet.nix
new file mode 100644
index 000000000000..20dda305543c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/sachet.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "sachet";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "messagebird";
+    repo = pname;
+    rev = version;
+    hash = "sha256-zcFViE1/B+wrkxZ3YIyfy2IBbxLvXOf8iK/6eqZb1ZQ=";
+  };
+
+  vendorHash = null;
+
+  meta = with lib; {
+    description = "An SMS alerting tool for Prometheus's Alertmanager";
+    homepage = "https://github.com/messagebird/sachet";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ govanify ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/script-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/script-exporter.nix
new file mode 100644
index 000000000000..5af5a5488d86
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/script-exporter.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "script_exporter";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "adhocteam";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-t/xgRalcHxEcT1peU1ePJUItD02rQdfz1uWpXDBo6C0=";
+  };
+
+  vendorHash = "sha256-Hs1SNpC+t1OCcoF3FBgpVGkhR97ulq6zYhi8BQlgfVc=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) script; };
+
+  meta = with lib; {
+    description = "Shell script prometheus exporter";
+    homepage = "https://github.com/adhocteam/script_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ Flakebi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/shelly-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/shelly-exporter.nix
new file mode 100644
index 000000000000..106e76b62460
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/shelly-exporter.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "shelly_exporter";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "aexel90";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-L0TuBDq5eEahQvzqd1WuvmXuQbbblCM+Nvj15IybnVo=";
+  };
+
+  vendorHash = "sha256-BCrge2xLT4b4wpYA+zcsH64a/nfV8+HeZF7L49p2gEw=";
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) shelly; };
+
+  meta = with lib; {
+    description = "Shelly humidity sensor exporter for prometheus";
+    homepage = "https://github.com/aexel90/shelly_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [drupol];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/smartctl-exporter/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/smartctl-exporter/default.nix
new file mode 100644
index 000000000000..2e916367c924
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/smartctl-exporter/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchFromGitHub
+, buildGoModule
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "smartctl_exporter";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oUdMsUAlN/4uRSzxQrO0TOVRgyEdxYkGtf3VoNbxdhw=";
+  };
+
+  vendorHash = "sha256-0WLI+nLhRkf1CGhSer1Jkv1nUho5sxIbTE/Mf5JmX7U=";
+
+  ldflags = [
+    "-X github.com/prometheus/common/version.Version=${version}"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) smartctl; };
+
+  meta = with lib; {
+    description = "Export smartctl statistics for Prometheus";
+    homepage = "https://github.com/prometheus-community/smartctl_exporter";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ hexa Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/smokeping-prober.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/smokeping-prober.nix
new file mode 100644
index 000000000000..c61302603daa
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/smokeping-prober.nix
@@ -0,0 +1,37 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "smokeping_prober";
+  version = "0.7.1";
+
+  ldflags = let
+    setVars = rec {
+      Version = version;
+      Revision = "722200c4adbd6d1e5d847dfbbd9dec07aa4ca38d";
+      Branch = Revision;
+      BuildUser = "nix";
+    };
+    varFlags = lib.concatStringsSep " " (lib.mapAttrsToList (name: value: "-X github.com/prometheus/common/version.${name}=${value}") setVars);
+  in [
+    "${varFlags}" "-s" "-w"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "SuperQ";
+    repo = "smokeping_prober";
+    rev = "v${version}";
+    sha256 = "sha256-kpg4oUDv1C5NQuxfFNLmRIMkc8hbMkjiKL16HkYrUyU=";
+  };
+  vendorHash = "sha256-TgieqjE23gwyKLuKSqc5pkxRpou8lg+yVnVoINZDkGU=";
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) smokeping; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for sending continual ICMP/UDP pings";
+    homepage = "https://github.com/SuperQ/smokeping_prober";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lukegb ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/snmp-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/snmp-exporter.nix
new file mode 100644
index 000000000000..812484fdf615
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/snmp-exporter.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub, net-snmp, nixosTests }:
+
+buildGoModule rec {
+  pname = "snmp_exporter";
+  version = "0.25.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "snmp_exporter";
+    rev = "v${version}";
+    sha256 = "sha256-6Y2zJwY5gToJlY6iLug2jNXXtNLNz98WoTKGcWgYzaA=";
+  };
+
+  vendorHash = "sha256-8soLDI/hBzSZB6Lfj1jVkIWfIkMPJmp84bu7TKg7jeo=";
+
+  buildInputs = [ net-snmp ];
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) snmp; };
+
+  meta = with lib; {
+    description = "SNMP Exporter for Prometheus";
+    homepage = "https://github.com/prometheus/snmp_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ oida Frostman ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/sql-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/sql-exporter.nix
new file mode 100644
index 000000000000..b88534cb5ac7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/sql-exporter.nix
@@ -0,0 +1,37 @@
+{ lib, buildGoModule, fetchFromGitHub, go, prometheus-sql-exporter, testers }:
+
+buildGoModule rec {
+  pname = "sql_exporter";
+  version = "0.5.3";
+
+  src = fetchFromGitHub {
+    owner = "justwatchcom";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-Cp8+vVGyAwYcrBiEN1SmUnHqWFGtuypvzfDROJgOn28=";
+  };
+
+  vendorHash = null;
+
+  ldflags = let t = "github.com/prometheus/common/version"; in
+    [
+      "-X ${t}.Version=${version}"
+      "-X ${t}.Revision=${src.rev}"
+      "-X ${t}.Branch=unknown"
+      "-X ${t}.BuildUser=nix@nixpkgs"
+      "-X ${t}.BuildDate=unknown"
+      "-X ${t}.GoVersion=${lib.getVersion go}"
+    ];
+
+  passthru.tests.version = testers.testVersion {
+    package = prometheus-sql-exporter;
+    command = "sql_exporter -version";
+  };
+
+  meta = with lib; {
+    description = "Flexible SQL exporter for Prometheus";
+    homepage = "https://github.com/justwatchcom/sql_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ justinas ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/statsd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/statsd-exporter.nix
new file mode 100644
index 000000000000..201ec3a32e36
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/statsd-exporter.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "statsd_exporter";
+  version = "0.26.0";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "statsd_exporter";
+    rev = "v${version}";
+    hash = "sha256-C7+4v40T667KJHEQ3ebLDg2wJNrxD/nossfT6rMlER8=";
+  };
+
+  ldflags =
+    let
+      t = "github.com/prometheus/common/version";
+    in
+    [ "-s" "-w"
+      "-X ${t}.Version=${version}"
+      "-X ${t}.Revision=unknown"
+      "-X ${t}.Branch=unknown"
+      "-X ${t}.BuildUser=nix@nixpkgs"
+      "-X ${t}.BuildDate=unknown"
+    ];
+
+  vendorHash = "sha256-scBpRZeECgAtpu9lnkIk1I2c8UmAkEL8LYNPUeUNYto=";
+
+  meta = with lib; {
+    description = "Receives StatsD-style metrics and exports them to Prometheus";
+    homepage = "https://github.com/prometheus/statsd_exporter";
+    changelog = "https://github.com/prometheus/statsd_exporter/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ivan ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/surfboard-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/surfboard-exporter.nix
new file mode 100644
index 000000000000..39e475df1974
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/surfboard-exporter.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub, nixosTests }:
+
+buildGoPackage rec {
+  pname = "surfboard_exporter";
+  version = "2.0.0";
+
+  goPackagePath = "github.com/ipstatic/surfboard_exporter";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "ipstatic";
+    repo = "surfboard_exporter";
+    sha256 = "11qms26648nwlwslnaflinxcr5rnp55s908rm1qpnbz0jnxf5ipw";
+  };
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) surfboard; };
+
+  meta = with lib; {
+    description = "Arris Surfboard signal metrics exporter";
+    homepage = "https://github.com/ipstatic/surfboard_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ disassembler ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/systemd-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/systemd-exporter.nix
new file mode 100644
index 000000000000..7abe243d3036
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/systemd-exporter.nix
@@ -0,0 +1,34 @@
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+
+buildGoModule rec {
+  pname = "systemd_exporter";
+  version = "0.6.0";
+
+  vendorHash = "sha256-D5ASUP6XHNeHZqH/ui5GvxWis/NQrRpN/+wkO4fKkA8=";
+
+  src = fetchFromGitHub {
+    owner = "prometheus-community";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-zLg4cOZUh50OFPp4mKR/FY0JfzVmXmDFcKkhB6DalGc=";
+  };
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=unknown"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) systemd; };
+
+  meta = with lib; {
+    description = "Exporter for systemd unit metrics";
+    homepage = "https://github.com/prometheus-community/systemd_exporter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ chkno ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/tor-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/tor-exporter.nix
new file mode 100644
index 000000000000..fcfe87806eb9
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/tor-exporter.nix
@@ -0,0 +1,39 @@
+{ lib, fetchFromGitHub, python3Packages, nixosTests }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "tor-exporter";
+  version = "0.4";
+
+  # Just a single .py file to use as the application's main entry point.
+  format = "other";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "atx";
+    repo = "prometheus-tor_exporter";
+    sha256 = "1gzf42z0cgdqijbi9cwpjkqzkvnabaxkkfa5ac5h27r3pxx3q4n0";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ prometheus-client stem retrying ];
+
+  installPhase = ''
+    mkdir -p $out/share/
+    cp prometheus-tor-exporter.py $out/share/
+  '';
+
+  fixupPhase = ''
+    makeWrapper "${python3Packages.python.interpreter}" "$out/bin/prometheus-tor-exporter" \
+          --set PYTHONPATH "$PYTHONPATH" \
+          --add-flags "$out/share/prometheus-tor-exporter.py"
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) tor; };
+
+  meta = with lib; {
+    description = "Prometheus exporter that exposes metrics from a Tor daemon";
+    homepage = "https://github.com/atx/prometheus-tor_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ delroth ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/unbound-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/unbound-exporter.nix
new file mode 100644
index 000000000000..e683ca72b9e5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/unbound-exporter.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+let
+  version = "0.4.5";
+in
+buildGoModule {
+  pname = "unbound_exporter";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "letsencrypt";
+    repo = "unbound_exporter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-p2VSIQXTnNGgqUSvWQ4J3SbrnWGBO21ps4VCWOjioLM=";
+  };
+
+  vendorHash = "sha256-q3JqAGeEU5WZWTzdFE9hR2dAnsFjMM44JiYdodZrnhs=";
+
+  passthru.tests = {
+    inherit (nixosTests.prometheus-exporters) unbound;
+  };
+
+  meta = with lib; {
+    changelog = "https://github.com/letsencrypt/unbound_exporter/releases/tag/v${version}";
+    description = "Prometheus exporter for Unbound DNS resolver";
+    homepage = "https://github.com/letsencrypt/unbound_exporter/tree/main";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/v2ray-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/v2ray-exporter.nix
new file mode 100644
index 000000000000..51bf3d8ccac6
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/v2ray-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "v2ray-exporter";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "wi1dcard";
+    repo = "v2ray-exporter";
+    rev = "v${version}";
+    sha256 = "12mzng3cw24fyyh8zjfi26gh853k5blzg3zbxcccnv5lryh2r0yi";
+  };
+
+  vendorHash = "sha256-+jrD+QatTrMaAdbxy5mpCm8lF37XDIy1GFyEiUibA2k=";
+
+  meta = with lib; {
+    description = "Prometheus exporter for V2Ray daemon";
+    homepage = "https://github.com/wi1dcard/v2ray-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jqqqqqqqqqq ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/varnish-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/varnish-exporter.nix
new file mode 100644
index 000000000000..aa86f0642409
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/varnish-exporter.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoModule, fetchFromGitHub, makeWrapper, varnish, nixosTests }:
+
+buildGoModule rec {
+  pname = "prometheus_varnish_exporter";
+  version = "1.6.1";
+
+  src = fetchFromGitHub {
+    owner = "jonnenauha";
+    repo = "prometheus_varnish_exporter";
+    rev = version;
+    hash = "sha256-1sUzKLNkLP/eX0wYSestMAJpjAmX1iimjYoFYb6Mgpc=";
+  };
+
+  vendorHash = "sha256-P2fR0U2O0Y4Mci9jkAMb05WR+PrpuQ59vbLMG5b9KQI=";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/prometheus_varnish_exporter \
+      --prefix PATH : "${varnish}/bin"
+  '';
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) varnish; };
+
+  meta = {
+    homepage = "https://github.com/jonnenauha/prometheus_varnish_exporter";
+    description = "Varnish exporter for Prometheus";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ MostAwesomeDude ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
new file mode 100644
index 000000000000..d810633c17f3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
@@ -0,0 +1,31 @@
+{ stdenv, rustPlatform, fetchFromGitHub, lib, libiconv, Security, nixosTests }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "wireguard-exporter";
+  version = "3.6.6";
+
+  src = fetchFromGitHub {
+    owner = "MindFlavor";
+    repo = "prometheus_wireguard_exporter";
+    rev = version;
+    sha256 = "sha256-2e31ZuGJvpvu7L2Lb+n6bZWpC1JhETzEzSiNaxxsAtA=";
+  };
+
+  cargoSha256 = "sha256-NsxGpjuZPpz4gCJRp5IOcfRFh8DTud47nV2bE0/kc2Q=";
+
+  postPatch = ''
+    # drop hardcoded linker names, fixing static build
+    rm .cargo/config.toml
+  '';
+
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) wireguard; };
+
+  meta = with lib; {
+    description = "A Prometheus exporter for WireGuard, written in Rust";
+    homepage = "https://github.com/MindFlavor/prometheus_wireguard_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/xmpp-alerts.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/xmpp-alerts.nix
new file mode 100644
index 000000000000..da6013b9b5ec
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/xmpp-alerts.nix
@@ -0,0 +1,61 @@
+{ lib
+, fetchFromGitHub
+, python3Packages
+, prometheus-alertmanager
+, fetchpatch
+, runCommand
+, prometheus-xmpp-alerts
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "prometheus-xmpp-alerts";
+  version = "0.5.8";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "jelmer";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-iwqcowwJktZQfdxykpsw/MweAPY0KF7ojVwvk1LP8a4=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "bs4" "beautifulsoup4"
+  '';
+
+  propagatedBuildInputs = [
+    prometheus-alertmanager
+  ] ++ (with python3Packages; [
+    aiohttp
+    aiohttp-openmetrics
+    beautifulsoup4
+    jinja2
+    slixmpp
+    prometheus-client
+    pyyaml
+  ]);
+
+  nativeCheckInputs = with python3Packages; [
+    setuptools
+    unittestCheckHook
+    pytz
+  ];
+
+  pythonImportsCheck = [ "prometheus_xmpp" ];
+
+  passthru.tests = {
+    binaryWorks = runCommand "${pname}-binary-test" {} ''
+      # Running with --help to avoid it erroring due to a missing config file
+      ${prometheus-xmpp-alerts}/bin/prometheus-xmpp-alerts --help | tee $out
+      grep "usage: prometheus-xmpp-alerts" $out
+    '';
+  };
+
+  meta = {
+    description = "XMPP Web hook for Prometheus";
+    homepage = "https://github.com/jelmer/prometheus-xmpp-alerts";
+    maintainers = with lib.maintainers; [ fpletz ];
+    license = with lib.licenses; [ asl20 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/zfs-exporter.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/zfs-exporter.nix
new file mode 100644
index 000000000000..d229daa14b81
--- /dev/null
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/zfs-exporter.nix
@@ -0,0 +1,39 @@
+{ buildGoModule
+, lib
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "zfs_exporter";
+  version = "2.3.2";
+
+  src = fetchFromGitHub {
+    owner = "pdf";
+    repo = pname;
+    rev = "v" + version;
+    hash = "sha256-JpLrCkPg0vVR0bKKHY5qf1/OD+O7yvWxS7kb7Yg3+c4=";
+  };
+
+  vendorHash = "sha256-uIilESEmAxANxFOy7qvYxlF/bId/Kqh4jUspNknlhlc=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=unknown"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  postInstall = ''
+    install -Dm444 -t $out/share/doc/${pname} *.md
+  '';
+
+  meta = with lib; {
+    description = "ZFS Exporter for the Prometheus monitoring system";
+    homepage = "https://github.com/pdf/zfs_exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}