{ lib , ...}: { options.oxalab.wg = with lib; lib.mkOption { default = []; type = types.listOf (types.submodule { options = { # general network stuff networkName = mkOption { type = types.nullOr types.str; default = null; }; CIDRs = mkOption { type = types.nullOr (types.listOf types.str); default = null; }; hosts = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { enable = mkOption { type = types.bool; default = true; }; address = mkOption { type = types.listOf types.str; default = null; }; publicKey = mkOption { type = types.str; default = null; }; privateKeyFile = mkOption { type = types.path; default = null; }; endpoint.enable = mkOption { type = types.bool; default = false; }; endpoint.endpoint = mkOption { type = types.nullOr types.str; default = null; }; endpoint.port = mkOption { type = types.nullOr types.int; default = null; }; endpoint.publicIface = mkOption { type = types.nullOr types.str; default = null; }; endpoint.extraPeers = mkOption { default = []; type = types.listOf (types.submodule { options = { address = mkOption { type = types.listOf types.str; default = []; }; publicKey = mkOption { type = types.nullOr types.str; default = null; }; }; }); }; }; }); }; }; }); }; }