add min-copy-closure, a minimal nix-copy-closure substitute

This commit is contained in:
Daniel Barlow 2023-05-06 22:47:03 +01:00
parent 67768004ee
commit 30153a2d4e
5 changed files with 65 additions and 0 deletions

View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
target_host=$1
shift
paths=$(nix-store -q --requisites "$@")
needed=""
coproc remote {
ssh -C ${target_host}
}
exec 10>&${remote[1]}
for p in $paths; do
echo "test -e $p && echo skip || echo $p" >&10
read n <&${remote[0]}
case $n in
skip)
:
;;
*)
needed="${needed} $n"
echo Will copy $n
;;
esac
done
if test -z "$needed" ; then
echo Nothing to copy
exit 1
fi
echo "cd / && cpio -v -i >/dev/console" >&10
find $needed | cpio -H newc -o >&10
echo "date" >&10
read n <&${remote[0]}
echo $n