{ runCommand, git, nix }: src: let hash = import (runCommand "head-hash.nix" { dummy = builtins.currentTime; preferLocalBuild = true; } '' cd ${toString src} (${git}/bin/git show && ${git}/bin/git diff) > $out hash=$(${nix}/bin/nix-hash $out) echo "\"$hash\"" > $out ''); in runCommand "local-git-export" { dummy = hash; preferLocalBuild = true; } '' cd ${toString src} mkdir -p "$out" for file in $(${git}/bin/git ls-files); do mkdir -p "$out/$(dirname $file)" cp -d $file "$out/$file" || true # don't fail when trying to copy a directory done ''