0. Set keyboard & console font
loadkeys uk
setfont ter-118n
timedatectl set-timezone Europe/London
2. Define useful variables
export DRIVE=/dev/nvme1n1
export BOOT_PARTITION=/dev/nvme1n1p1
export LUKS_PARTITION=/dev/nvme1n1p2
export ROOT_PARTITION=/dev/vg0/root
export SWAP_PARTITION=/dev/vg0/swap
export LUKS_NAME=luks0
export LVM_NAME=vg0
export LVM_ROOT_NAME=root
export LVM_SWAP_NAME=swap
wipefs --all $BOOT_PARTITION || true
wipefs --all $LUKS_PARTITION || true
wipefs --all $DRIVE
# Setup GPT with 4GB EFI system partition & remaining as generic Linux filesystem partition
cfdisk $DRIVE
mkfs.fat -F 32 -n BOOT $BOOT_PARTITION
cryptsetup luksFormat --verbose --type luks2 --cipher aes-xts-plain64 --key-size 512 --hash sha512 --pbkdf pbkdf2 --iter-time 5000 --verify-passphrase $LUKS_PARTITION
cryptsetup luksAddKey --verbose --hash sha512 --pbkdf pbkdf2 --iter-time 5000 --verify-passphrase $LUKS_PARTITION
cryptsetup open $LUKS_PARTITION $LUKS_NAME
7. Setup LVM on LUKS partition
pvcreate /dev/mapper/$LUKS_NAME
vgcreate $LVM_NAME /dev/mapper/$LUKS_NAME
lvcreate -L 32G -n $LVM_SWAP_NAME $LVM_NAME
lvcreate -l 100%FREE -n $LVM_ROOT_NAME $LVM_NAME
mkfs.ext4 -L ROOT $ROOT_PARTITION
mkswap -L SWAP $SWAP_PARTITION
mount --mkdir $ROOT_PARTITION /mnt
mount --mkdir $BOOT_PARTITION /mnt/boot
10. Install base packages
# Set the '--country' flag to 'GB'
nano /etc/xdg/reflector/reflector.conf
systemctl start reflector
pacstrap -K /mnt base linux linux-firmware intel-ucode dosfstools e2fsprogs efibootmgr cryptsetup lvm2 nano dhcpcd ethtool bind traceroute reflector terminus-font
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt