-# these files are not exposed.
-s scp -r /q/root/luks /q/root/shadow \
- root@$faiserver_host:/srv/fai/config/distro-install-common
-scp /a/bin/devbyid root@$faiserver_host:/srv/fai/nfsroot/usr/local/bin
-# built this with mk-basefile -J BELENOS64. it's stored in it's own repo which
-# is published alongside this one called fai-basefiles due
-# to being a large binary file.
-scp /a/bin/fai-basefiles/BELENOS64.tar.xz root@$faiserver_host:/srv/fai/config/basefiles
-ssh root@$faiserver_host bash <<'EOF'
-set -eE -o pipefail
-set -x
-# make it the root because pxe-kexec only looks there.
-# It wouldn't be too hard to change if we needed.
-# We could also just dump things in /srv/tftp, but fai
-# has some defaults, which I don't even use, which expect
-# the other directory, so it's kind of a tossup, whatever.
-sed -ri 's,^ *(TFTP_DIRECTORY=).*,\1"/srv/tftp/fai",' /etc/default/tftpd-hpa
-systemctl restart tftpd-hpa
-chmod 644 /srv/fai/config/files/root/.ssh/authorized_keys/GRUB_PC
-chmod -R a+rX /srv/fai/config/distro-install-common
-cd /srv/fai/config/basefiles
-u=http://fai-project.org/download/basefiles/XENIAL64.tar.xz
-wget -nv -N $u
-EOF
+# these files are not available.
+
+
+if [[ $target ]]; then
+ secret_files=(luks/$target luks/host-$target shadow/$target)
+ exists=false
+ for f in ${secret_files[@]}; do
+ if [[ -e /q/root/$f ]]; then
+ exists=true
+ secrets_to_send+=("$f")
+ fi
+ done
+ if $exists; then
+ {
+ for f in ${secrets_to_send[@]}; do
+ echo $f
+ done
+ } | rsrv -lpt --files-from=- /q/root /fai/config/distro-install-common
+ fi
+else
+ rsrv -rlpt /q/root/shadow /q/root/luks /fai/config/distro-install-common
+fi
+
+rsrv -rlpt --delete /a/opt/btrfs-progs-release /a/opt/btrfs-progs /fai/config/distro-install-common
+
+dirs=(/p/c/machine_specific/${target:-*}/filesystem/etc/ssh)
+if [[ -e ${dirs[0]} ]]; then
+ rsrv -rlpt --delete --relative ${dirs[@]} /fai/config/distro-install-common
+fi
+
+# historical notes: once I tried installing all generic packages using
+# the DESKTOP class, and populated the package list here, but it had
+# some problem and figured it was easier to debug if we let fai just
+# handle some basic initial things.
+# I also tried speeding up an initial install by making basefile with
+# lots of packages installed in a script called mk-basefile-big. Many
+# packages fail to install by having debootstrap install extra
+# packages. I tried instead to do a fai dirinstall (fancy chroot) to
+# install packages, then turn that into a new basefile. It had some
+# problem and once again, did not seem worth debugging.
+
+rsrv -rplt --include '/*.zst' --exclude '/**' --delete-excluded $BASEFILE_DIR/ /fai/config/basefiles/