diff options
author | tv <tv@krebsco.de> | 2016-06-12 13:53:23 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2016-06-12 13:54:05 +0200 |
commit | fb8be5838adfe58fc5d13235ac82022cbdb8f6e4 (patch) | |
tree | 880c5d8a753cc32ec95d1c8aad43108db340f9ad | |
parent | 8353b1293e4e4c307e7b875a5449ac901a5afc7d (diff) |
writeFiles: init
-rw-r--r-- | krebs/5pkgs/builders.nix | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/krebs/5pkgs/builders.nix b/krebs/5pkgs/builders.nix index f60bbc9d0..8ba0ab5a7 100644 --- a/krebs/5pkgs/builders.nix +++ b/krebs/5pkgs/builders.nix @@ -81,6 +81,26 @@ rec { mv "$textPath" $out ''; + writeFiles = name: specs0: + let + specs = mapAttrsToList (path: spec0: { + path = assert types.pathname.check path; path; + var = "file_${hashString "sha1" path}"; + text = spec0.text; + }) specs0; + + filevars = genAttrs' specs (spec: nameValuePair spec.var spec.text); + + env = filevars // { passAsFile = attrNames filevars; }; + in + pkgs.runCommand name env /* sh */ '' + set -efu + PATH=${makeBinPath [pkgs.coreutils]} + ${concatMapStrings (spec: /* sh */ '' + install -D ''$${spec.var}Path $out${spec.path} + '') specs} + ''; + writeHaskell = k: let |