summaryrefslogtreecommitdiff
path: root/modules/wg/options.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/wg/options.nix')
-rw-r--r--modules/wg/options.nix79
1 files changed, 79 insertions, 0 deletions
diff --git a/modules/wg/options.nix b/modules/wg/options.nix
new file mode 100644
index 0000000..4f090d0
--- /dev/null
+++ b/modules/wg/options.nix
@@ -0,0 +1,79 @@
+{ 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;
+ };
+ };
+ });
+ };
+ };
+ });
+ };
+ };
+ });
+ };
+}