Created
February 12, 2020 15:12
-
-
Save mealies/959d0b343a9e43baa3d49e5ee0565de5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
hostname="" | |
encryption_passphrase="" | |
root_password="" | |
continent_city="" | |
swap_size="16" | |
echo "Updating system time" | |
timedatectl set-ntp true | |
timedatectl set-timezone $continent_city | |
echo "Creating partition tables" | |
printf "n\n1\n4096\n+512M\nef00\nw\ny\n" | gdisk /dev/nvme0n1 | |
printf "n\n2\n\n\n8e00\nw\ny\n" | gdisk /dev/nvme0n1 | |
echo "Setting up cryptographic volume" | |
printf "%s" "$encryption_passphrase" | cryptsetup -h sha512 -s 512 --use-random --type luks2 luksFormat /dev/nvme0n1p2 | |
printf "%s" "$encryption_passphrase" | cryptsetup luksOpen /dev/nvme0n1p2 cryptlvm | |
echo "Creating physical volume" | |
pvcreate /dev/mapper/cryptlvm | |
echo "Creating volume volume" | |
vgcreate vg0 /dev/mapper/cryptlvm | |
echo "Creating logical volumes" | |
lvcreate -L +"$swap_size"GB vg0 -n swap | |
lvcreate -l +100%FREE vg0 -n root | |
echo "Setting up / partition" | |
yes | mkfs.ext4 /dev/vg0/root | |
mount /dev/vg0/root /mnt | |
echo "Setting up /boot partition" | |
yes | mkfs.fat -F32 /dev/nvme0n1p1 | |
mkdir /mnt/boot | |
mount /dev/nvme0n1p1 /mnt/boot | |
echo "Setting up swap" | |
yes | mkswap /dev/vg0/swap | |
swapon /dev/vg0/swap | |
echo "Installing Arch Linux" | |
yes '' | pacstrap /mnt base base-devel linux linux-headers linux-lts linux-lts-headers linux-firmware lvm2 device-mapper e2fsprogs intel-ucode cryptsetup mesa networkmanager curl man-db man-pages neovim git diffutils | |
echo "Generating fstab" | |
genfstab -U /mnt >> /mnt/etc/fstab | |
echo "Configuring new system" | |
arch-chroot /mnt /bin/bash <<EOF | |
echo "Setting system clock" | |
ln -fs /usr/share/zoneinfo/$continent_city /etc/localtime | |
hwclock --systohc --localtime | |
echo "Setting locales" | |
echo "en_GB.UTF-8 UTF-8" >> /etc/locale.gen | |
echo "LANG=en_GB.UTF-8" >> /etc/locale.conf | |
locale-gen | |
echo "Adding persistent keymap" | |
echo "KEYMAP=uk" > /etc/vconsole.conf | |
echo "Setting hostname" | |
echo $hostname > /etc/hostname | |
echo "Setting root password" | |
echo -en "$root_password\n$root_password" | passwd | |
echo "Generating initramfs" | |
sed -i 's/^HOOKS.*/HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt sd-lvm2 filesystems fsck)/' /etc/mkinitcpio.conf | |
sed -i 's/^MODULES.*/MODULES=(ext4 intel_agp i915)/' /etc/mkinitcpio.conf | |
mkinitcpio -p linux | |
mkinitcpio -p linux-lts | |
echo "Setting up systemd-boot" | |
bootctl --path=/boot install | |
mkdir -p /boot/loader/ | |
touch /boot/loader/loader.conf | |
tee -a /boot/loader/loader.conf << END | |
default arch | |
timeout 1 | |
editor 0 | |
END | |
mkdir -p /boot/loader/entries/ | |
touch /boot/loader/entries/arch.conf | |
tee -a /boot/loader/entries/arch.conf << END | |
title ArchLinux | |
linux /vmlinuz-linux | |
initrd /intel-ucode.img | |
initrd /initramfs-linux.img | |
options rd.luks.name=$(blkid -s UUID -o value /dev/nvme0n1p2)=cryptlvm root=/dev/vg0/root resume=/dev/vg0/swap rd.luks.options=discard i915.fastboot=1 quiet rw | |
END | |
touch /boot/loader/entries/archlts.conf | |
tee -a /boot/loader/entries/archlts.conf << END | |
title ArchLinux | |
linux /vmlinuz-linux-lts | |
initrd /intel-ucode.img | |
initrd /initramfs-linux-lts.img | |
options rd.luks.name=$(blkid -s UUID -o value /dev/nvme0n1p2)=cryptlvm root=/dev/vg0/root resume=/dev/vg0/swap rd.luks.options=discard i915.fastboot=1 quiet rw | |
END | |
echo "Setting up Pacman hook for automatic systemd-boot updates" | |
mkdir -p /etc/pacman.d/hooks/ | |
touch /etc/pacman.d/hooks/systemd-boot.hook | |
tee -a /etc/pacman.d/hooks/systemd-boot.hook << END | |
[Trigger] | |
Type = Package | |
Operation = Upgrade | |
Target = systemd | |
[Action] | |
Description = Updating systemd-boot | |
When = PostTransaction | |
Exec = /usr/bin/bootctl update | |
END | |
echo "Enabling periodic TRIM" | |
systemctl enable fstrim.timer | |
echo "Enabling NetworkManager" | |
systemctl enable NetworkManager | |
EOF | |
umount -R /mnt | |
swapoff -a | |
echo "Install has completed. Please reboot!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment