import writers from stockholm 0bc2409

This commit is contained in:
tv
2018-06-12 20:08:24 +02:00
commit 394590c4b3
3 changed files with 365 additions and 0 deletions

24
lib/default.nix Normal file
View File

@@ -0,0 +1,24 @@
let {
body = lib;
lib = nixpkgs.lib // builtins // (with lib; {
genAttrs' = names: f: listToAttrs (map f names);
getAttrs = names: set:
listToAttrs (map (name: nameValuePair name set.${name})
(filter (flip hasAttr set) names));
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;
test = re: x: isString x && testString re x;
testString = re: x: match re x != null;
types = nixpkgs.lib.types // import ./types.nix { lib = body; };
});
nixpkgs.lib = import <nixpkgs/lib>;
}

23
lib/types.nix Normal file
View File

@@ -0,0 +1,23 @@
{ lib, ... }:
with lib;
rec {
# POSIX.12013, 3.2 Absolute Pathname
absolute-pathname = mkOptionType {
name = "POSIX absolute pathname";
check = x: isString x && substring 0 1 x == "/" && pathname.check x;
merge = mergeOneOption;
};
file-mode = mkOptionType {
name = "file mode";
check = test "[0-7]{4}";
merge = mergeOneOption;
};
# POSIX.12013, 3.278 Portable Filename Character Set
filename = mkOptionType {
name = "POSIX filename";
check = test "([0-9A-Za-z._])[0-9A-Za-z._-]*";
merge = mergeOneOption;
};
}