From 3c61d227cf189967071501fa73b27697fc2d63a5 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 13 Jun 2016 01:12:10 +0200 Subject: lib.guard: init --- krebs/4lib/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'krebs/4lib/default.nix') diff --git a/krebs/4lib/default.nix b/krebs/4lib/default.nix index bfe8c581..da936fad 100644 --- a/krebs/4lib/default.nix +++ b/krebs/4lib/default.nix @@ -15,6 +15,16 @@ let out = rec { addNames = mapAttrs addName; + guard = spec@{ type, value, ... }: + assert isOptionType type; + if type.check value + then value + else throw (toString (filter isString [ + "argument" + (if spec ? name then "‘${spec.name}’" else null) + "is not a ${type.name}" + ])); + types = import ./types.nix { inherit config; lib = lib // { inherit genid optionalTrace; }; -- cgit v1.2.3 From 2adb41310c16c43546a6855a1f6dbcc1c96dc344 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 13 Jun 2016 01:23:44 +0200 Subject: lib.lpad: init --- krebs/4lib/default.nix | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'krebs/4lib/default.nix') diff --git a/krebs/4lib/default.nix b/krebs/4lib/default.nix index da936fad..09d416d4 100644 --- a/krebs/4lib/default.nix +++ b/krebs/4lib/default.nix @@ -37,6 +37,11 @@ let out = rec { shell = import ./shell.nix { inherit lib; }; tree = import ./tree.nix { inherit lib; }; + lpad = n: c: s: + if stringLength s < n + then lpad n c (c + s) + else s; + toC = x: let type = typeOf x; reject = throw "cannot convert ${type}"; -- cgit v1.2.3 From fb226f349843c080d6c81b60301a3a93977b99a4 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 13 Jun 2016 01:48:59 +0200 Subject: lib.genAttrs': init --- krebs/4lib/default.nix | 2 ++ 1 file changed, 2 insertions(+) (limited to 'krebs/4lib/default.nix') diff --git a/krebs/4lib/default.nix b/krebs/4lib/default.nix index 09d416d4..afff1729 100644 --- a/krebs/4lib/default.nix +++ b/krebs/4lib/default.nix @@ -56,6 +56,8 @@ let out = rec { mapAttrs (name: _: path + "/${name}") (filterAttrs (_: eq "directory") (readDir path)); + genAttrs' = names: f: listToAttrs (map f names); + setAttr = name: value: set: set // { ${name} = value; }; optionalTrace = c: msg: x: if c then trace msg x else x; -- cgit v1.2.3