From fee709297daf5d6831cfb0fc3882cf8fe3c53b6e Mon Sep 17 00:00:00 2001 From: kurogeek Date: Mon, 22 Jun 2026 11:36:27 +0700 Subject: [PATCH] mob next [ci-skip] [ci skip] [skip ci] lastFile:inventories/default.nix --- inventories/default.nix | 132 ++++++++++++++-------------- modules/clan/prometheus/default.nix | 53 ++++++++++- 2 files changed, 117 insertions(+), 68 deletions(-) diff --git a/inventories/default.nix b/inventories/default.nix index b01ee58..204d61a 100644 --- a/inventories/default.nix +++ b/inventories/default.nix @@ -325,73 +325,73 @@ ( { config, pkgs, ... }: { - clan.core.vars.generators.prometheus = { - files.matrix-alertmanager-token.secret = true; - files.matrix-alertmanager-secret.secret = true; - files.matrix-alertmanager-urlfile = { - secret = true; - owner = "alertmanager"; - group = "alertmanager"; - }; - script = '' - echo "" > $out/matrix-alertmanager-token - openssl rand -hex 32 > "$out"/matrix-alertmanager-secret + # clan.core.vars.generators.prometheus = { + # files.matrix-alertmanager-token.secret = true; + # files.matrix-alertmanager-secret.secret = true; + # files.matrix-alertmanager-urlfile = { + # secret = true; + # owner = "alertmanager"; + # group = "alertmanager"; + # }; + # script = '' + # echo "" > $out/matrix-alertmanager-token + # openssl rand -hex 32 > "$out"/matrix-alertmanager-secret + # + # echo "http://localhost:3000/alerts?secret=$(cat $out/matrix-alertmanager-secret)" > $out/matrix-alertmanager-urlfile + # ''; + # runtimeInputs = [ + # pkgs.openssl + # ]; + # }; + # + # services.matrix-alertmanager = { + # enable = true; + # tokenFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-token.path; + # secretFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-secret.path; + # homeserverUrl = "https://matrix-client.matrix.org"; + # matrixUser = "@kuroiris:matrix.org"; + # matrixRooms = [ + # { + # receivers = [ + # "matrix" + # ]; + # roomId = "!rqIrWqPvsXqMgYpcNZ:matrix.org"; + # } + # ]; + # }; - echo "http://localhost:3000/alerts?secret=$(cat $out/matrix-alertmanager-secret)" > $out/matrix-alertmanager-urlfile - ''; - runtimeInputs = [ - pkgs.openssl - ]; - }; - - services.matrix-alertmanager = { - enable = true; - tokenFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-token.path; - secretFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-secret.path; - homeserverUrl = "https://matrix-client.matrix.org"; - matrixUser = "@kuroiris:matrix.org"; - matrixRooms = [ - { - receivers = [ - "matrix" - ]; - roomId = "!rqIrWqPvsXqMgYpcNZ:matrix.org"; - } - ]; - }; - - services.prometheus = { - - alertmanager = { - enable = true; - configuration = { - global = { - resolve_timeout = "5m"; - }; - route = { - receiver = "default"; - routes = [ - { - receiver = "matrix"; - } - ]; - }; - receivers = [ - { name = "default"; } - { - name = "matrix"; - webhook_configs = [ - { - url_file = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-urlfile.path; - send_resolved = true; - } - ]; - } - ]; - }; - }; - - }; + # services.prometheus = { + # + # alertmanager = { + # enable = true; + # configuration = { + # global = { + # resolve_timeout = "5m"; + # }; + # route = { + # receiver = "default"; + # routes = [ + # { + # receiver = "matrix"; + # } + # ]; + # }; + # receivers = [ + # { name = "default"; } + # { + # name = "matrix"; + # webhook_configs = [ + # { + # url_file = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-urlfile.path; + # send_resolved = true; + # } + # ]; + # } + # ]; + # }; + # }; + # + # }; } ) ]; diff --git a/modules/clan/prometheus/default.nix b/modules/clan/prometheus/default.nix index 712f83d..9a9980c 100644 --- a/modules/clan/prometheus/default.nix +++ b/modules/clan/prometheus/default.nix @@ -10,7 +10,7 @@ description = "Prometheus server that scraps all data from nodes"; interface = - { lib, ... }: + { lib, options, ... }: { options = { scrape_interval = lib.mkOption { @@ -30,6 +30,23 @@ }; description = "Definition of a default receiver, default is doing nothing"; }; + matrix-alertmanager = { + enable = lib.mkOption { + type = with lib.types; bool; + default = false; + description = "Whether to enable `services.matrix-alertmanager`"; + }; + homeserverUrl = lib.mkOption { + type = with lib.types; str; + default = "https://matrix-client.matrix.org"; + description = "URL of the Matrix homeserver to use"; + }; + matrixUser = lib.mkOption { + type = with lib.types; str; + description = "Matrix user for the bot"; + }; + matrixRooms = options.services.matrix-alertmanager.matrixRooms; + }; }; }; @@ -161,7 +178,39 @@ }; - }; + } + // lib.optionalAttrs settings.matrix-alertmanager.enable ( + { pkgs, ... }: + { + clan.core.vars.generators.prometheus = { + files.matrix-alertmanager-token.secret = true; + files.matrix-alertmanager-secret.secret = true; + files.matrix-alertmanager-urlfile = { + secret = true; + owner = "alertmanager"; + group = "alertmanager"; + }; + script = '' + echo "" > $out/matrix-alertmanager-token + openssl rand -hex 32 > "$out"/matrix-alertmanager-secret + + echo "http://localhost:3000/alerts?secret=$(cat $out/matrix-alertmanager-secret)" > $out/matrix-alertmanager-urlfile + ''; + runtimeInputs = [ + pkgs.openssl + ]; + }; + + services.matrix-alertmanager = lib.mkIf settings.matrix-alertmanager.enable { + enable = true; + tokenFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-token.path; + secretFile = config.clan.core.vars.generators.prometheus.files.matrix-alertmanager-secret.path; + homeserverUrl = settings.matrix-alertmanager.homeserverUrl; + matrixUser = settings.matrix-alertmanager.matrixUser; + matrixRooms = settings.matrix-alertmanager.matrixRooms; + }; + } + ); }; };