From c8d71ce6acbae124a7bc162323442979a1d6df06 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 12 Jun 2018 22:35:07 +0200 Subject: lib.types: add pathname --- lib/types.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'lib') diff --git a/lib/types.nix b/lib/types.nix index 197633e..572964a 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -20,4 +20,19 @@ rec { check = test "([0-9A-Za-z._])[0-9A-Za-z._-]*"; merge = mergeOneOption; }; + + # POSIX.1‐2013, 3.267 Pathname + pathname = mkOptionType { + name = "POSIX pathname"; + check = x: + let + # The filter is used to normalize paths, i.e. to remove duplicated and + # trailing slashes. It also removes leading slashes, thus we have to + # check for "/" explicitly below. + xs = filter (s: stringLength s > 0) (splitString "/" x); + in + isString x && (x == "/" || (length xs > 0 && all filename.check xs)); + merge = mergeOneOption; + }; + } -- cgit v1.2.3