#!/usr/bin/env bash #vim: set ft=bash: set -ex port="${1}" # HTTP port that packer is running on host="${2}" loadkeys en # Probably not necessary in a script, but here we are 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} g # create new GPT partition table n # new # default partition number # default start +512M # size t # set type 1 # EFI system partition n # second partition # default partition number # start at first free sector # default to full disk p # print, for debugging w # write the partition table and exit EOF # Format and mount partitions mkfs.vfat "${disk}1" mkfs.ext4 "${disk}2" mount "${disk}2" /mnt mkdir -p /mnt/boot mount "${disk}1" /mnt/boot # Bootstrap system pacstrap -K /mnt base linux nano sudo networkmanager openssh grub python3 efibootmgr genfstab -L /mnt >> /mnt/etc/fstab cat /mnt/etc/fstab # Run stuff in the chroot curl -o /mnt/in-chroot.sh "http://${host}:${port}/in-chroot.sh" arch-chroot /mnt /usr/bin/bash /in-chroot.sh "${disk}" rm /mnt/in-chroot.sh reboot