doti/system/limine.sh

29 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
. "std.sh"
info "Bootloader setup"
pacinstall jq
pacinstall efibootmgr
pacinstall limine
disk_part=$(lsblk -o NAME,PARTN --noheadings --json | jq -r '.blockdevices | map(select(.children != null)) | map(. as $disk | .children | .[] | "\($disk.name) \(.partn)") | .[]' | fzf --prompt="boot device> ")
disk=$(echo $disk_part | cut -d" " -f1)
part=$(echo $disk_part | cut -d" " -f2)
root_part=$(lsblk -o KNAME,NAME --json | jq -r '.blockdevices | map(select(.children != null)) | .[].children.[].kname | "/dev/\(.)"' | fzf --prompt="root device> ")
uuid=$(sudo blkid "${root_part}" -o json | jq -r .uuid)
sudo sh -c "sed "s/@UUID@/${uuid}/" ./system/limine.conf > /boot/EFI/limine/limine.conf"
sudo mkdir -p /boot/EFI/limine/
sudo cp /usr/share/limine/BOOTX64.EFI /boot/EFI/limine/BOOTX64.EFI
sudo efibootmgr --create "${disk}" --part "${part}" --label "Archl" --loader '\EFI\limine\BOOTX64.EFI' --unicode
sudo mkdir -p /etc/pacman.d/hooks
sudo cp ./system/99-limine.hook /etc/pacman.d/hooks/99-limine.hook
info "Bootloader setup done"