diff options
Diffstat (limited to 'modules/wg/options.nix')
| -rw-r--r-- | modules/wg/options.nix | 141 |
1 files changed, 75 insertions, 66 deletions
diff --git a/modules/wg/options.nix b/modules/wg/options.nix index 4f090d0..56fd964 100644 --- a/modules/wg/options.nix +++ b/modules/wg/options.nix @@ -1,79 +1,88 @@ -{ 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; - }; + 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; + }; - endpoint.extraPeers = mkOption { - default = []; - type = types.listOf (types.submodule { + hosts = mkOption { + default = { }; + type = types.attrsOf ( + types.submodule { options = { + + enable = mkOption { + type = types.bool; + default = true; + }; address = mkOption { type = types.listOf types.str; - default = []; + 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; + }; + }; + } + ); + }; }; - }); - }; + } + ); }; - }); - }; - }; - }); - }; + }; + } + ); + }; } |
