Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 55 lines 1.1 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchgit, 5 bash, 6}: 7let 8 mkscript = path: text: '' 9 mkdir -pv `dirname ${path}` 10 cat > ${path} <<"EOF" 11 #!${bash}/bin/bash 12 ME=$(basename ${path}) 13 ${text} 14 EOF 15 sed -i "s@%out@$out@g" ${path} 16 chmod +x ${path} 17 ''; 18 19 hashname = 20 r: 21 let 22 rpl = lib.replaceStrings [ ":" "/" ] [ "_" "_" ]; 23 in 24 (rpl r.url) + "-" + (rpl r.rev); 25 26in 27stdenv.mkDerivation { 28 name = "fakegit"; 29 30 buildCommand = '' 31 mkdir -pv $out/repos 32 ${lib.concatMapStrings ( 33 r: "cp -r ${fetchgit r} $out/repos/${hashname r}\n" 34 ) (import ./src-libs.nix)} 35 36 ${mkscript "$out/bin/checkout-git.sh" '' 37 if test "$#" -ne 4; then 38 echo "Usage: $0 DESTINATION URL GITBRANCH HASH" 39 exit 1 40 fi 41 DEST=$1 42 URL=`echo $2 | tr :/ __` 43 GITBRANCH=$3 44 REVISION=$4 45 46 REVISION=`echo $REVISION | tr :/ __` 47 48 rm -rf $DEST 49 mkdir -pv $DEST 50 echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2 51 cp -r %out/repos/$URL-$REVISION/* $DEST 52 chmod u+w -R $DEST 53 ''} 54 ''; 55}