From 3e48fd26be3ce365f84ebb4229fc3bbc7ed0ead5 Mon Sep 17 00:00:00 2001 From: arcnmx Date: Sat, 7 Sep 2024 15:45:53 -0700 Subject: [PATCH] chore(gatus): assert unique names at eval time --- modules/nixos/gatus.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/nixos/gatus.nix b/modules/nixos/gatus.nix index 09ee55ee..e0ce437a 100644 --- a/modules/nixos/gatus.nix +++ b/modules/nixos/gatus.nix @@ -4,7 +4,11 @@ pkgs, ... }: let - inherit (lib) types mkIf mkOption mkEnableOption mkPackageOption mkOptionDefault; + inherit (lib.options) mkOption mkEnableOption mkPackageOption; + inherit (lib.modules) mkIf mkOptionDefault; + inherit (lib.attrsets) attrValues; + inherit (lib.lists) length unique; + inherit (lib) types; cfg = config.services.gatus; @@ -364,6 +368,14 @@ in { isSystemUser = true; }; }; + assertions = let + endpointNames = map (endpoint: endpoint.name) (attrValues cfg.settings.endpoints); + in [ + { + assertion = length (unique endpointNames) == length endpointNames; + message = "Gatus endpoint names must be unique"; + } + ]; }; meta.maintainers = with lib.maintainers; [christoph-heiss];