Files
vms/distros/nixos/23.05/http/install.sh
T

50 lines
1.4 KiB
Bash
Raw Normal View History

2023-08-13 23:58:13 -05:00
#!/usr/bin/env bash
#vim: set ft=bash:
set -ex
port="${1}" # HTTP port that packer is running on
2023-08-15 11:23:29 -05:00
host="${2}"
2023-08-13 23:58:13 -05:00
if [ -e /dev/vda ]; then
disk="/dev/vda"
elif [ -e /dev/sda ]; then
disk="/dev/sda"
else
exit 1 # Need to teach the script which device to use in this case
fi
# The sed bit is just to strip out the extra fluff, like comments
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk ${disk}
o # create new DOS partition table
n # new
p # primary partition
1 # part number
# default start
# default to full disk
p # print, for debugging
w # write the partition table and exit
EOF
#t # set partition type
#1 # on partition 1
#4 # BIOS boot
# Format and mount partitions
mkfs.ext4 -L root "${disk}1"
mount "${disk}1" /mnt
# Bootstrap system
nixos-generate-config --root /mnt
2023-08-15 11:23:29 -05:00
curl -o /mnt/etc/nixos/configuration.nix "http://${host}:${port}/configuration.nix"
2023-11-28 10:30:17 -06:00
curl -o /mnt/etc/nixos/flake.nix "http://${host}:${port}/flake.nix"
2023-08-13 23:58:13 -05:00
sed -i -E -e "s,@BOOT_DEVICE@,${disk}," /mnt/etc/nixos/configuration.nix
sed -i -E -e 's,(.*device = "/dev/disk/).*(".*),\1by-label/root\2,' /mnt/etc/nixos/hardware-configuration.nix
2023-11-28 10:30:17 -06:00
nixos-install --no-root-password --flake "/mnt/etc/nixos/#vagrant"
2023-08-13 23:58:13 -05:00
# Run stuff in the chroot
2023-08-15 11:23:29 -05:00
curl -o /mnt/root/in-chroot.sh "http://${host}:${port}/in-chroot.sh"
2023-08-13 23:58:13 -05:00
nixos-enter --root /mnt -c 'bash /root/in-chroot.sh'
rm /mnt/root/in-chroot.sh
reboot