From dbe87bc88a92d16067e902b27748f1f03d04be5a Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Fri, 20 Jun 2025 22:17:54 +0200 Subject: [PATCH] Deduce gatus endpoint group from domain when possible --- modules/system/services/actualbudget/default.nix | 5 +---- modules/system/services/forgejo/default.nix | 6 +----- modules/system/services/gatus.nix | 11 ++++++++--- modules/system/services/hedgedoc/default.nix | 1 - modules/system/services/it-tools.nix | 1 - modules/system/services/nextcloud/default.nix | 1 - modules/system/services/syncthing/default.nix | 6 +----- 7 files changed, 11 insertions(+), 20 deletions(-) diff --git a/modules/system/services/actualbudget/default.nix b/modules/system/services/actualbudget/default.nix index 6294caa..e7eb63e 100644 --- a/modules/system/services/actualbudget/default.nix +++ b/modules/system/services/actualbudget/default.nix @@ -26,9 +26,6 @@ in }; }; - custom.services.gatus.endpoints."Actual Budget" = { - group = "Private"; - url = "https://${cfg.domain}/"; - }; + custom.services.gatus.endpoints."Actual Budget".url = "https://${cfg.domain}/"; }; } diff --git a/modules/system/services/forgejo/default.nix b/modules/system/services/forgejo/default.nix index 1336a7c..853a7e7 100644 --- a/modules/system/services/forgejo/default.nix +++ b/modules/system/services/forgejo/default.nix @@ -96,14 +96,10 @@ in custom.services.gatus.endpoints = { "Forgejo" = { - group = "Public"; url = "https://${cfg.domain}/api/healthz"; extraConditions = [ "[BODY].status == pass" ]; }; - "Forgejo SSH" = { - group = "Public"; - url = "ssh://${cfg.domain}"; - }; + "Forgejo SSH".url = "ssh://${cfg.domain}"; }; }; } diff --git a/modules/system/services/gatus.nix b/modules/system/services/gatus.nix index b749df3..d77e8b7 100644 --- a/modules/system/services/gatus.nix +++ b/modules/system/services/gatus.nix @@ -29,8 +29,8 @@ in default = name; }; group = lib.mkOption { - type = lib.types.str; - default = ""; + type = lib.types.nullOr lib.types.str; + default = null; }; url = lib.mkOption { type = lib.types.nonEmptyStr; @@ -101,8 +101,13 @@ in url, extraConditions, }: + let + isPrivate = lib.hasInfix config.custom.services.tailscale.domain url; + deducedGroup = if isPrivate then "Private" else "Public"; + in { - inherit name group url; + inherit name url; + group = if group == null then deducedGroup else group; interval = "30s"; alerts = [ { type = "ntfy"; } ]; ssh = lib.mkIf (lib.hasPrefix "ssh" url) { diff --git a/modules/system/services/hedgedoc/default.nix b/modules/system/services/hedgedoc/default.nix index 4a4fae8..70374e1 100644 --- a/modules/system/services/hedgedoc/default.nix +++ b/modules/system/services/hedgedoc/default.nix @@ -81,7 +81,6 @@ in environment.shellAliases.hedgedoc-manage-users = "sudo --user=${user} ${manage_users}"; custom.services.gatus.endpoints."Hedgedoc" = { - group = "Public"; url = "https://${cfg.domain}/_health"; extraConditions = [ "[BODY].ready == true" ]; }; diff --git a/modules/system/services/it-tools.nix b/modules/system/services/it-tools.nix index 40f3c7b..a8af760 100644 --- a/modules/system/services/it-tools.nix +++ b/modules/system/services/it-tools.nix @@ -31,7 +31,6 @@ in }; custom.services.gatus.endpoints."IT Tools" = { - group = "Public"; url = "https://${cfg.domain}/health"; extraConditions = [ "[BODY] == OK" ]; }; diff --git a/modules/system/services/nextcloud/default.nix b/modules/system/services/nextcloud/default.nix index 1054e1d..90b437e 100644 --- a/modules/system/services/nextcloud/default.nix +++ b/modules/system/services/nextcloud/default.nix @@ -74,7 +74,6 @@ in }; custom.services.gatus.endpoints."Nextcloud" = { - group = "Private"; url = "https://${cfg.domain}/status.php"; extraConditions = [ "[BODY].installed == true" diff --git a/modules/system/services/syncthing/default.nix b/modules/system/services/syncthing/default.nix index 6abfbb9..1e7f015 100644 --- a/modules/system/services/syncthing/default.nix +++ b/modules/system/services/syncthing/default.nix @@ -99,12 +99,8 @@ in }; custom.services.gatus.endpoints = lib.mkIf cfg.isServer { - "Syncthing" = { - group = "Private"; - url = "tcp://${config.networking.hostName}.${tailscaleCfg.domain}:22000"; - }; + "Syncthing".url = "tcp://${config.networking.hostName}.${tailscaleCfg.domain}:22000"; "Syncthing GUI" = { - group = "Private"; url = "https://${cfg.gui.domain}/rest/noauth/health"; extraConditions = [ "[BODY].status == OK" ]; };