lib.write{Files => Out}: admit file mode

This commit is contained in:
tv 2016-06-13 01:28:43 +02:00
parent fcfe4b6461
commit e769ff0838

View File

@ -81,12 +81,23 @@ rec {
mv "$textPath" $out mv "$textPath" $out
''; '';
writeFiles = name: specs0: writeOut = name: specs0:
let let
specs = mapAttrsToList (path: spec0: { specs = mapAttrsToList (path0: spec0: rec {
path = assert types.pathname.check path; path; path = guard {
type = types.pathname;
value = path0;
};
var = "file_${hashString "sha1" path}"; var = "file_${hashString "sha1" path}";
text = spec0.text; text = spec0.text;
executable = guard {
type = types.bool;
value = spec0.executable or false;
};
mode = guard {
type = types.file-mode;
value = spec0.mode or (if executable then "0755" else "0644");
};
}) specs0; }) specs0;
filevars = genAttrs' specs (spec: nameValuePair spec.var spec.text); filevars = genAttrs' specs (spec: nameValuePair spec.var spec.text);
@ -97,7 +108,7 @@ rec {
set -efu set -efu
PATH=${makeBinPath [pkgs.coreutils]} PATH=${makeBinPath [pkgs.coreutils]}
${concatMapStrings (spec: /* sh */ '' ${concatMapStrings (spec: /* sh */ ''
install -D ''$${spec.var}Path $out${spec.path} install -m ${spec.mode} -D ''$${spec.var}Path $out${spec.path}
'') specs} '') specs}
''; '';