script appears to work

This commit is contained in:
Kyle Isom 2025-09-01 02:48:15 -07:00
parent 974418bf8c
commit 9d7df09ba1
1 changed files with 77 additions and 35 deletions

View File

@ -13,47 +13,89 @@ echo " image: ${qcow2}"
sleep 5 sleep 5
echo "[+] updating NixOS config" build_nixos_vm () {
cd /etc/nixos
doas git pull --rebase local master
if [[ -d "${build_dir}" ]] echo "[+] updating NixOS config"
then cd /etc/nixos
echo "[+] removing ${build_dir}" doas git pull --rebase local master
sleep 2
rm -r "${build_dir}"
fi
mkdir "${build_dir}" if [[ -d "${build_dir}" ]]
cd "${build_dir}" then
nixos-rebuild build-vm echo "[+] removing ${build_dir}"
sleep 2
rm -r "${build_dir}"
fi
echo "[+] Spinning up VM; kill it when you see the line" mkdir "${build_dir}"
echo " 'Virtualisation disk image created.'" cd "${build_dir}"
"${build_dir}/result/bin/run-$(hostname -s)-vm" nixos-rebuild build-vm
doas qemu-img resize "${qcow2}" 256G
doas modprobe nbd max_part=8 echo "[+] Spinning up VM; kill it when you see the line"
echo " 'Virtualisation disk image created.'"
"${build_dir}/result/bin/run-$(hostname -s)-vm"
doas qemu-img resize "${qcow2}" 256G
echo "[+] connecting to network block driver" doas modprobe nbd max_part=8
echo " note: on failure, you may need to manually run"
echo " doas qemu-nbd --disconnect /dev/nbd0"
doas qemu-nbd --connect=/dev/nbd0 ${qcow2}
if [[ -d "${mount_point}" ]] echo "[+] connecting to network block driver"
then echo " note: on failure, you may need to manually run"
echo "[+] removing ${mount_point}" echo " doas qemu-nbd --disconnect /dev/nbd0"
sleep 2 doas qemu-nbd --connect=/dev/nbd0 ${qcow2}
rm -r "${mount_point}"
fi
mkdir -p "${mount_point}" if [[ -d "${mount_point}" ]]
doas mount /dev/nbd0 "${mount_point}" then
echo "[+] removing ${mount_point}"
sleep 2
rm -r "${mount_point}"
fi
rsync --progress -auvz "${HOME}/" "${mount_point}/home/kyle/" mkdir -p "${mount_point}"
doas mount /dev/nbd0 "${mount_point}"
echo "[+] finished, cleaning up" rsync --progress -auvz "${HOME}/" "${mount_point}/home/kyle/"
doas unmount "${mount_point}"
doas qemu-nbd --disconnect /dev/nbd0 echo "[+] finished, cleaning up"
doas rmdir "${mount_point}" doas umount "${mount_point}"
doas rm -r "${build_dir}" doas qemu-nbd --disconnect /dev/nbd0
doas rmdir "${mount_point}"
doas rm -r "${build_dir}"
}
cleanup () {
if [[ -d "${build_dir}" ]]
then
echo "[+] removing ${build_dir}"
sleep 2
rm -r "${build_dir}"
fi
if [[ ! -z "$(mount | grep /dev/nbd0)" ]]
then
echo "[+] unmounting network block device"
doas umount /dev/nbd0
fi
echo "[+] disconnecting network block device"
echo " it's okay if this fails"
doas qemu-nbd --disconnect /dev/nbd0
if [[ -d "${mount_point}" ]]
then
echo "[+] removing ${mount_point}"
sleep 2
rm -r "${mount_point}"
fi
}
case "${1:-build}" in
build)
build_nixos_vm
;;
cleanup)
cleanup
;;
*)
echo "[!] Valid commands are build, cleanup"
exit 1
;;
esac