diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-03-25 14:51:02 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-03-25 14:51:02 +0100 |
| commit | 646206816cbdd0b401c847fe0e21549d00fd7a87 (patch) | |
| tree | b8013dc0d115a800098d8389f00c20213de58927 | |
| parent | 571440880790e13135322671b7f7eff45a5d31e5 (diff) | |
add grub config generation
| -rwxr-xr-x | nais | 40 |
1 files changed, 34 insertions, 6 deletions
@@ -10,7 +10,9 @@ export BOOT_MODE=bios set_system_disk() { disk=$(lsblk --raw -o TYPE,NAME,SIZE,MODEL | grep disk | sed 's/disk//g' | column -s ' ' -t | sed 's/\\x20/ /g' | bemenu -p "Select Disk" | awk '{ print $1 }') + uuid=$(lsblk --raw -o NAME,UUID | grep "$disk" | awk '{ print $2 }') export DISK="$disk" + export ROOTUUID="$uuid" } set_username_and_password() { @@ -25,6 +27,7 @@ set_root_keyfile() { [ -z "$usb" ] && return + keyuuid=$(lsblk --raw -o NAME,UUID | grep "$usb" | awk '{ print $2 }') mount --mkdir "/dev/$usb" /key [ ! -d "/key/.keys/" ] && mkdir /key/.keys @@ -35,6 +38,7 @@ set_root_keyfile() { [ ! -e "$keyfile" ] && dd if=/dev/random of="/key/.key/$keyfile" bs=1024 count=4 export KEYFILE="$keyfile" + export KEYUUID="$keyuuid" } set_timezone() { @@ -55,14 +59,25 @@ set_hostname() { install_arch() { if [ "$BOOT_MODE" = "bios" ]; then sfdisk -X dos "/dev/$DISK" - boot="/dev/${DISK}1" - root="/dev/${DISK}2" + if echo "$DISK" | grep -E "[0-9]$"; then + boot="/dev/${DISK}p1" + root="/dev/${DISK}p2" + else + boot="/dev/${DISK}1" + root="/dev/${DISK}2" + fi printf ",4G,L\n,,L\nwrite\n" | sfdisk "/dev/$DISK" else sfdisk -X gpt "$DISK" - efi="/dev/${DISK}1" - boot="/dev/${DISK}2" - root="/dev/${DISK}3" + if echo "$DISK" | grep -E "[0-9]$"; then + efi="/dev/${DISK}p1" + boot="/dev/${DISK}p2" + root="/dev/${DISK}p3" + else + efi="/dev/${DISK}1" + boot="/dev/${DISK}2" + root="/dev/${DISK}3" + fi printf ",1G,U\n,4G,L\n,,L\nwrite\n" | sfdisk "/dev/$DISK" mkfs.fat -F 32 "$efi" fi @@ -78,7 +93,9 @@ install_arch() { mkfs.vfat /dev/mapper/boot || exit mount --mkdir "$boot" /mnt/boot || exit - pacstrap -K /mnt base linux linux-firmware neovim neomutt wayland wayland-protocols wlroots xorg-xwayland git base-devel networkmanager btrfs-progs sudo + [ "$BOOT_MODE" = "uefi" ] && mount --mkdir "$efi" /mnt/boot/EFI + + pacstrap -K /mnt base linux linux-firmware neovim neomutt wayland wayland-protocols wlroots xorg-xwayland git base-devel networkmanager btrfs-progs sudo grub dd if=/dev/random of=/mnt/etc/.bootkey bs=1024 count=4 echo "$PASSWORD" | cryptsetup luksAddKey --key-file - /dev/mapper/boot /mnt/etc/.bootkey || exit @@ -103,6 +120,17 @@ install_arch() { sed -i 's/# \(%wheel ALL=(ALL:ALL) NOPASSWD: ALL\)/\1/g' /mnt/etc/sudoers arch-chroot /mnt useradd -G wheel "$USERNAME" -p "$PASSWORD" || exit + echo "GRUB_ENABLE_CRYPTODISK=y" >> /mnt/etc/default/grub + sed -i "s/\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 cryptdevice=UUID=$ROOTUUID:root cryptkey=UUID=$KEYUUID:btrfs:/.keys/$KEYFILE\"/g" + + if [ "$BOOT_MODE" = "bios" ]; then + arch-chroot /mnt grub-install --target=i386-pc --recheck "/dev/$DISK" + else + arch-chroot /mnt grub-install --target=x86_64-efi --efi-direcotry=/boot/EFI --bootloader-id=GRUB --recheck + fi + + grub-mkconfig -o /boot/grub/grub.cfg + echo Finished. exit } |