{ config, lib, ... }: with lib; { options.architect = { firewall = { openTCP = mkOption { type = types.listOf types.int; default = [ ]; }; openUDP = mkOption { type = types.listOf types.int; default = [ ]; }; openTCPVPN = mkOption { type = types.listOf types.int; default = [ ]; }; openUDPVPN = mkOption { type = types.listOf types.int; default = [ ]; }; }; networks = mkOption { type = types.attrsOf (types.submodule { options = { interface = mkOption { type = types.str; description = "The network interface name."; }; net = mkOption { type = types.str; description = "The network address in CIDR format."; }; devices = mkOption { type = types.attrsOf (types.submodule { options = { address = mkOption { type = types.str; description = "The IP address of the device."; }; hostname = mkOption { type = types.str; description = "The hostname of the device."; }; }; }); default = { }; description = "An attribute set of devices with their configurations."; }; }; }); default = { }; description = "An attribute set of networks with their configurations."; }; }; }