From ee52522cc139670c3eeaeeb462dff98ea870d2e4 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 24 Jul 2015 12:23:52 +0200 Subject: 4: {tv -> krebs}.types --- 4lib/krebs/types.nix | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 4lib/krebs/types.nix (limited to '4lib/krebs/types.nix') diff --git a/4lib/krebs/types.nix b/4lib/krebs/types.nix new file mode 100644 index 000000000..38ed8a916 --- /dev/null +++ b/4lib/krebs/types.nix @@ -0,0 +1,81 @@ +{ lib, ... }: + +with lib; +with types; + +types // rec { + + host = submodule { + options = { + name = mkOption { + type = label; + }; + dc = mkOption { + type = label; + }; + cores = mkOption { + type = positive; + }; + nets = mkOption { + type = attrsOf net; + apply = x: assert hasAttr "retiolum" x; x; + }; + }; + }; + + net = submodule ({ config, ... }: { + options = { + via = mkOption { + type = nullOr net; + default = null; + }; + addrs = mkOption { + type = listOf addr; + apply = _: config.addrs4 ++ config.addrs6; + }; + addrs4 = mkOption { + type = listOf addr4; + default = []; + }; + addrs6 = mkOption { + type = listOf addr6; + default = []; + }; + aliases = mkOption { + # TODO nonEmptyListOf hostname + type = listOf hostname; + }; + tinc = mkOption { + type = let net-config = config; in submodule ({ config, ... }: { + options = { + config = mkOption { + type = str; + apply = _: '' + ${optionalString (net-config.via != null) + (concatMapStringsSep "\n" (a: "Address = ${a}") net-config.via.addrs)} + ${concatMapStringsSep "\n" (a: "Subnet = ${a}") net-config.addrs} + ${config.pubkey} + ''; + }; + pubkey = mkOption { + type = str; + }; + }; + }); + }; + }; + }); + + positive = mkOptionType { + name = "positive integer"; + check = x: isInt x && x > 0; + merge = mergeOneOption; + }; + + # TODO + addr = str; + addr4 = str; + addr6 = str; + hostname = str; + label = str; +} -- cgit v1.2.3 From f10523afd37c07a3c3cec55f68a100c176b5b20f Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 24 Jul 2015 18:36:16 +0200 Subject: 4 krebs.types.host: add option: secure --- 4lib/krebs/types.nix | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to '4lib/krebs/types.nix') diff --git a/4lib/krebs/types.nix b/4lib/krebs/types.nix index 38ed8a916..9d02c779f 100644 --- a/4lib/krebs/types.nix +++ b/4lib/krebs/types.nix @@ -20,6 +20,15 @@ types // rec { type = attrsOf net; apply = x: assert hasAttr "retiolum" x; x; }; + secure = mkOption { + type = bool; + default = false; + description = '' + If true, then the host is capable of keeping secret information. + + TODO define minimum requirements for secure hosts + ''; + }; }; }; -- cgit v1.2.3 From a62be1cef8726a2afa61df3dac9e19a71882b370 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 24 Jul 2015 20:48:00 +0200 Subject: {2 tv git -> 3 krebs}.users --- 4lib/krebs/types.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to '4lib/krebs/types.nix') diff --git a/4lib/krebs/types.nix b/4lib/krebs/types.nix index 9d02c779f..ca92c6900 100644 --- a/4lib/krebs/types.nix +++ b/4lib/krebs/types.nix @@ -81,6 +81,17 @@ types // rec { merge = mergeOneOption; }; + user = submodule { + options = { + name = mkOption { + type = str; # TODO + }; + pubkey = mkOption { + type = str; + }; + }; + }; + # TODO addr = str; addr4 = str; -- cgit v1.2.3 From 939f1b20c2d9e7da6fbe83005057a5e14d5abf4d Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 25 Jul 2015 01:05:14 +0200 Subject: krebs.types.user += mail --- 4lib/krebs/types.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to '4lib/krebs/types.nix') diff --git a/4lib/krebs/types.nix b/4lib/krebs/types.nix index ca92c6900..3d3d75a65 100644 --- a/4lib/krebs/types.nix +++ b/4lib/krebs/types.nix @@ -83,6 +83,9 @@ types // rec { user = submodule { options = { + mail = mkOption { + type = str; # TODO retiolum mail address + }; name = mkOption { type = str; # TODO }; -- cgit v1.2.3