summaryrefslogtreecommitdiffstats
path: root/4lib/krebs/default.nix
blob: 0c42a5de3a73e0967fa89613727f44f0d7ca2ebd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{ lib, ... }:

with builtins;
with lib;

builtins // lib // rec {

  addName = name: set:
    set // { inherit name; };

  addNames = mapAttrs addName;

  types = import ./types.nix { inherit lib; };


  # listset k v = set k [v]

  # listset-insert : k -> v -> listset k v -> listset k v
  listset-insert = name: value: set:
    set // { ${name} = set.${name} or [] ++ [value]; };

  # tree k v = set k (either v (tree k v))

  # tree-get : [k] -> tree k v -> v
  tree-get = path: x:
    let
      y = x.${last path};
    in
    if typeOf y != "set"
      then y
      else tree-get (init path) y;

}