{config, ...}: {
  m3ta.ports = {
    enable = true;
    definitions = {
      # System services
      ssh = 22;

      # Web & proxy services
      traefik = 80;
      traefik-ssl = 443;

      # Databases
      postgres = 5432;
      mysql = 3306;
      redis = 6379;

      # VPN & networking
      wireguard = 51820;
      tailscale = 41641;
      headscale = 3009;

      # Containers & web apps
      gitea = 3030;
      baserow = 3001;
      ghost = 3002;
      wastebin = 3003;
      littlelink = 3004;
      searx = 3005;
      restreamer = 3006;
      paperless = 3012;
      vaultwarden = 3013;
      slash = 3010;
      slash-nemoti = 3016;
      kestra = 3018;
      outline = 3019;
      pangolin = 3020;
      pangolin-api = 3021;
      pangolin-ws = 3022;

      # Home automation
      homarr = 7575;

      # DNS
      adguardhome = 53;
    };

    hostOverrides = {
      # Host-specific overrides
      m3-ares = {
        # Any custom port overrides for m3-ares
      };

      m3-atlas = {
        # Any custom port overrides for m3-atlas
      };

      m3-helios = {
        # Any custom port overrides for m3-helios
      };

      m3-kratos = {
        # Any custom port overrides for m3-kratos
      };
    };
  };
  environment.etc."info/all-ports.json" = {
    text = builtins.toJSON {
      hostname = config.networking.hostName;
      ports = config.m3ta.ports.all; # TODO should only return actually used ports
    };
  };
}
