summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2016-06-12 13:53:23 +0200
committertv <tv@krebsco.de>2016-06-12 13:54:05 +0200
commitfb8be5838adfe58fc5d13235ac82022cbdb8f6e4 (patch)
tree880c5d8a753cc32ec95d1c8aad43108db340f9ad
parent8353b1293e4e4c307e7b875a5449ac901a5afc7d (diff)
writeFiles: init
-rw-r--r--krebs/5pkgs/builders.nix20
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