bscpkgs/garlic/stages/experiment.nix

35 lines
581 B
Nix
Raw Normal View History

2020-10-09 01:00:55 +08:00
{
stdenv
, nixPrefix ? ""
}:
units:
with stdenv.lib;
let
stageProgram = stage:
if stage ? programPath
then "${stage}${stage.programPath}" else "${stage}";
unitsString = builtins.concatStringsSep "\n"
(map (x: "${stageProgram x}") units);
in
stdenv.mkDerivation {
name = "experiment";
phases = [ "installPhase" ];
preferLocalBuild = true;
dontPatchShebangs = true;
inherit units;
installPhase = ''
cat > $out << EOF
#!/bin/sh
# This is an experiment formed by the following units:
${unitsString}
EOF
chmod +x $out
'';
}