stockholm/krebs/4lib/default.nix

48 lines
1.1 KiB
Nix
Raw Normal View History

2016-02-21 06:39:24 +00:00
{ config, lib, ... }:
2015-07-24 10:23:52 +00:00
2015-07-24 18:48:00 +00:00
with builtins;
with lib;
2015-11-09 18:07:26 +00:00
let out = rec {
2015-07-24 18:48:00 +00:00
2015-10-14 22:55:07 +00:00
eq = x: y: x == y;
2016-02-01 16:30:38 +00:00
ne = x: y: x != y;
2015-10-14 22:55:07 +00:00
2015-12-26 04:55:13 +00:00
mod = x: y: x - y * (x / y);
2015-07-24 18:48:00 +00:00
addName = name: set:
set // { inherit name; };
addNames = mapAttrs addName;
2015-07-24 10:23:52 +00:00
2016-02-21 06:39:24 +00:00
types = import ./types.nix {
inherit config;
lib = lib // { inherit genid; };
};
2015-07-24 10:23:52 +00:00
dir.has-default-nix = path: pathExists (path + "/default.nix");
2015-12-26 04:55:13 +00:00
genid = import ./genid.nix { lib = lib // out; };
2015-11-09 18:07:26 +00:00
git = import ./git.nix { lib = lib // out; };
shell = import ./shell.nix { inherit lib; };
tree = import ./tree.nix { inherit lib; };
2015-08-28 19:31:59 +00:00
2016-02-14 11:28:56 +00:00
toC = x: let
type = typeOf x;
reject = throw "cannot convert ${type}";
in {
2015-08-28 19:31:59 +00:00
list = "{ ${concatStringsSep ", " (map toC x)} }";
null = "NULL";
2016-02-14 11:28:56 +00:00
set = if isDerivation x then toJSON x else reject;
2015-08-28 19:31:59 +00:00
string = toJSON x; # close enough
2016-02-14 11:28:56 +00:00
}.${type} or reject;
2015-10-14 22:59:00 +00:00
subdirsOf = path:
mapAttrs (name: _: path + "/${name}")
(filterAttrs (_: eq "directory") (readDir path));
mapAttrValues = f: mapAttrs (_: f);
setAttr = name: value: set: set // { ${name} = value; };
2015-11-09 18:07:26 +00:00
}; in out