From 0e41a027228bec671744d5ec17177a2be4934ba9 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Tue, 25 Feb 2025 23:59:52 +0100 Subject: [PATCH] service/webserver: assert for duplicate ports --- modules/services/webserver/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/services/webserver/default.nix b/modules/services/webserver/default.nix index f30c371..2716b2a 100644 --- a/modules/services/webserver/default.nix +++ b/modules/services/webserver/default.nix @@ -91,6 +91,24 @@ in }; config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = lib.allUnique (builtins.filter (p: p != null) (map (v: v.port) cfg.virtualHosts)); + message = + let + portsWithSubdomains = builtins.filter (v: v.port != null) cfg.virtualHosts; + duplicates = lib.filter ( + p: builtins.length (lib.filter (x: x.port == p.port) portsWithSubdomains) > 1 + ) portsWithSubdomains; + in + if duplicates == [ ] then + "" + else + "Duplicate ports found in my.services.webserver.virtualHosts: " + + builtins.concatStringsSep ", " (map (v: v.subdomain + ":" + builtins.toString v.port) duplicates); + } + ]; + services = { nginx.enable = false; caddy = {