diff options
Diffstat (limited to '4lib')
-rw-r--r-- | 4lib/krebs/default.nix | 18 | ||||
-rw-r--r-- | 4lib/krebs/dns.nix | 31 | ||||
-rw-r--r-- | 4lib/krebs/listset.nix | 11 | ||||
-rw-r--r-- | 4lib/krebs/tree.nix | 13 | ||||
-rw-r--r-- | 4lib/krebs/types.nix | 109 |
5 files changed, 0 insertions, 182 deletions
diff --git a/4lib/krebs/default.nix b/4lib/krebs/default.nix deleted file mode 100644 index b675853..0000000 --- a/4lib/krebs/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ lib, ... }: - -with builtins; -with lib; - -builtins // lib // rec { - - addName = name: set: - set // { inherit name; }; - - addNames = mapAttrs addName; - - types = import ./types.nix { inherit lib; }; - - dns = import ./dns.nix { inherit lib; }; - listset = import ./listset.nix { inherit lib; }; - tree = import ./tree.nix { inherit lib; }; -} diff --git a/4lib/krebs/dns.nix b/4lib/krebs/dns.nix deleted file mode 100644 index b2cf3c2..0000000 --- a/4lib/krebs/dns.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ lib, ... }: - -let - listset = import ./listset.nix { inherit lib; }; -in - -with builtins; -with lib; - -rec { - # label = string - - # TODO does it make sense to have alias = list label? - - # split-by-provider : - # [[label]] -> tree label provider -> listset provider alias - split-by-provider = as: providers: - foldl (m: a: listset.insert (provider-of a providers) a m) {} as; - - # provider-of : alias -> tree label provider -> provider - # Note that we cannot use tree.get here, because path can be longer - # than the tree depth. - provider-of = a: - let - go = path: tree: - if typeOf tree == "string" - then tree - else go (tail path) tree.${head path}; - in - go (reverseList (splitString "." a)); -} diff --git a/4lib/krebs/listset.nix b/4lib/krebs/listset.nix deleted file mode 100644 index 3aae22f..0000000 --- a/4lib/krebs/listset.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ lib, ... }: - -with lib; - -rec { - # listset k v = set k [v] - - # insert : k -> v -> listset k v -> listset k v - insert = name: value: set: - set // { ${name} = set.${name} or [] ++ [value]; }; -} diff --git a/4lib/krebs/tree.nix b/4lib/krebs/tree.nix deleted file mode 100644 index 1cd83b3..0000000 --- a/4lib/krebs/tree.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, ... }: - -with lib; - -rec { - # tree k v = set k (either v (tree k v)) - - # get : [k] -> tree k v -> v - get = path: tree: - if length path > 0 - then get (tail path) tree.${head path} # TODO check if elem exists - else tree; -} diff --git a/4lib/krebs/types.nix b/4lib/krebs/types.nix deleted file mode 100644 index 92410dd..0000000 --- a/4lib/krebs/types.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ 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; - }; - 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 - ''; - }; - }; - }; - - 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 nullOr (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; - }; - }; - })); - default = null; - }; - }; - }); - - positive = mkOptionType { - name = "positive integer"; - check = x: isInt x && x > 0; - merge = mergeOneOption; - }; - - user = submodule { - options = { - mail = mkOption { - type = str; # TODO retiolum mail address - }; - name = mkOption { - type = str; # TODO - }; - pubkey = mkOption { - type = str; - }; - pubkeys = mkOption { - type = attrsOf str; - default = {}; - }; - }; - }; - - # TODO - addr = str; - addr4 = str; - addr6 = str; - hostname = str; - label = str; -} |