diff options
author | makefu <github@syntax-fehler.de> | 2016-10-24 14:14:58 +0200 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2016-10-24 14:14:58 +0200 |
commit | 36cbb3d300eb18330a62ba20e35f80d515f5bc5f (patch) | |
tree | dedf23acdc5763b59b5853b07dd297b88fb15636 /lib/default.nix | |
parent | 3fa63a4f312a885d353177db911f8a52ce7a1e1c (diff) | |
parent | 08c7671fc51270e582e16cbe49aa896f8bff7685 (diff) |
Merge remote-tracking branch 'cd/master'
Diffstat (limited to 'lib/default.nix')
-rw-r--r-- | lib/default.nix | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/lib/default.nix b/lib/default.nix index 1f5010853..2b12fa4bf 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,10 +1,44 @@ let - lib = import <nixpkgs/lib> // builtins // { + nixpkgs-lib = import <nixpkgs/lib>; + lib = with lib; nixpkgs-lib // builtins // { + git = import ./git.nix { inherit lib; }; shell = import ./shell.nix { inherit lib; }; + types = nixpkgs-lib.types // import ./types.nix { inherit lib; }; eq = x: y: x == y; ne = x: y: x != y; mod = x: y: x - y * (x / y); + + genid = import ./genid.nix { inherit lib; }; + genid_signed = x: ((lib.genid x) + 16777216) / 2; + + lpad = n: c: s: + if lib.stringLength s < n + then lib.lpad n c (c + s) + else s; + + subdirsOf = path: + lib.mapAttrs (name: _: path + "/${name}") + (filterAttrs (_: eq "directory") (readDir path)); + + genAttrs' = names: f: listToAttrs (map f names); + + getAttrs = names: set: + listToAttrs (map (name: nameValuePair name set.${name}) + (filter (flip hasAttr set) names)); + + setAttr = name: value: set: set // { ${name} = value; }; + + toC = x: let + type = typeOf x; + reject = throw "cannot convert ${type}"; + in { + list = "{ ${concatStringsSep ", " (map toC x)} }"; + null = "NULL"; + set = if isDerivation x then toJSON x else reject; + string = toJSON x; # close enough + }.${type} or reject; + }; in |