# Glue: where the queue and the wireguard mesh share a host, the queue's port # is open on the mesh interface. # # Interface-scoped, never host-wide: the firewall is default-deny before a # packet reaches the listener, so without this no other hive can reach the # queue. Gated on BOTH being here — the queue's own module gate # (`deploy.nats.enable`) is restated below; a change there must change here. { lib, config, ... }: let hyperhiveCfg = config.services.hyperhive; deployCfg = hyperhiveCfg.deploy; in { config = lib.mkIf (deployCfg.nats.enable && deployCfg.wireguard.enable) { networking.firewall.interfaces.wg-hive.allowedTCPPorts = [ hyperhiveCfg.swarm.nats.port ]; }; }