2020-10-27 15:55:49 +03:00
|
|
|
{ lib, stdenvNoCC, coreutils }:
|
|
|
|
|
2020-10-28 13:43:22 +03:00
|
|
|
{ name, extension ? "tgz", contents # { target = source, ... }
|
2020-10-27 15:55:49 +03:00
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
transforms = builtins.concatStringsSep " " (lib.mapAttrsToList
|
|
|
|
(target: source: ''--transform "s,${source},${target},"'') contents);
|
|
|
|
|
|
|
|
sources = builtins.concatStringsSep " "
|
|
|
|
(lib.mapAttrsToList (_target: source: "${source}") contents);
|
|
|
|
|
|
|
|
in stdenvNoCC.mkDerivation {
|
2020-10-28 13:43:22 +03:00
|
|
|
name = "${name}.${extension}";
|
2020-11-05 15:19:09 +03:00
|
|
|
phases = [ "buildPhase" ];
|
2020-10-28 12:48:44 +03:00
|
|
|
|
2020-10-27 15:55:49 +03:00
|
|
|
nativeBuildInputs = [ coreutils ];
|
|
|
|
|
|
|
|
buildPhase = ''
|
2020-10-28 12:48:44 +03:00
|
|
|
tar -vczf $out \
|
2020-10-27 15:55:49 +03:00
|
|
|
--owner=0 --group=0 --mode=u+rw,uga+r \
|
|
|
|
--absolute-names \
|
|
|
|
--hard-dereference \
|
|
|
|
${transforms} \
|
|
|
|
${sources}
|
|
|
|
'';
|
|
|
|
|
|
|
|
preferLocalBuild = true;
|
|
|
|
}
|