aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xnais40
1 files changed, 34 insertions, 6 deletions
diff --git a/nais b/nais
index 5c86bc5..47f933e 100755
--- a/nais
+++ b/nais
@@ -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
}