#!/bin/bash set -e # Add an EFI boot entry for the Nomarchy UKI, allowing the system to boot directly # without a bootloader like Limine. Requires UEFI firmware and a built UKI. if [[ ! -d /sys/firmware/efi ]]; then echo "Error: System is not booted in UEFI mode" >&2 exit 1 fi if ! efibootmgr &>/dev/null; then echo "Error: efibootmgr is not available or not functional" >&2 exit 1 fi if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends"; then echo "Error: American Megatrends firmware may not safely support custom EFI entries" >&2 exit 1 fi if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then echo "Error: Apple firmware uses its own boot manager" >&2 exit 1 fi uki_file=$(find /boot/EFI/Linux/ -name "nomarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) if [[ -z $uki_file ]]; then echo "Error: No Nomarchy UKI found in /boot/EFI/Linux/" >&2 exit 1 fi boot_source=$(findmnt -n -o SOURCE /boot) disk=$(echo "$boot_source" | sed 's/p\?[0-9]*$//') part=$(echo "$boot_source" | grep -o 'p\?[0-9]*$' | sed 's/^p//') if gum confirm "Setup direct boot (so snapshot booting must be done via bios)?"; then echo "Creating EFI boot entry for $uki_file" sudo efibootmgr --create \ --disk "$disk" \ --part "$part" \ --label "Nomarchy" \ --loader "\\EFI\\Linux\\$uki_file" fi