{ lib, ... }: { checks = [ { assertion = lib.registry.predicates.uniqueValue (entry: entry.value.domain); message = "Route domains must be unique."; } ]; type = lib.types.submodule { options = { domain = lib.mkOption { type = lib.types.str; example = "files.alexion.dev"; description = "Public domain served by this route entry."; }; port = lib.mkOption { type = lib.types.nullOr lib.types.port; default = null; example = 3923; description = "Backend TCP port served by the matching address registry entry."; }; udp.ports = lib.mkOption { type = lib.types.listOf lib.types.port; default = [ ]; example = [ 2456 2457 ]; description = "UDP ports served by the matching address registry entry."; }; }; }; }