#!/bin/sh
#
# EFI boot manager tomfoolery v0.1
# (C) 2025 Pegasus Epsilon <pegasus@pimpninjas.org>
# Distribute Unmodified - https://pegasus.pimpninjas.org/license
OSNAME="Artix Linux"
EFIMOUNT=/EFI
EFIPATH=/EFI/Artix
EFIDISK=/dev/sdc
EFIPART=1
ROOTDEV=/dev/sdc2
KERNEL=$EFIPATH/vmlinuz-linux-zen
UCODE=$EFIPATH/amd-ucode.img
INITRD=$EFIPATH/initramfs-linux-zen.img
CMDLINE="modules=btrfs root=$ROOTDEV rootflags=subvol=artix rw"
CMDLINE="$CMDLINE initrd=$UCODE"
CMDLINE="$CMDLINE initrd=$INITRD"
if [ "$(id -u)" != "0" ]; then
echo Must be root, sorry.
exit
fi
if ! [ -f "$EFIMOUNT$KERNEL" ]; then
echo Kernel $EFIMOUNT$KERNEL not found
exit
fi
if ! [ -f "$EFIMOUNT$UCODE" ]; then
echo WARNING: $EFIMOUNT$UCODE not found
exit
fi
if ! [ -f "$EFIMOUNT$INITRD" ]; then
echo InitRD $EFIMOUNT$INITRD not found
exit
fi
case "$1" in
"boot" | "reboot")
next=$(efibootmgr | awk -F '[t*]' "BEGIN{IGNORECASE=1}/$2/{print \$2;exit}")
if [ "$next" ]; then
efibootmgr -n $next &>/dev/null && \
if [ "$3" = "now" ]; then
echo Rebooting into $2 now
reboot
else
echo "Selected $2 (Boot$next) for next boot"
fi
else
echo No boot entry for $2 found
fi
;;
"del" | "remove")
while : ; do
current=$(efibootmgr | awk -F '[t*]' "/$OSNAME/{print \$2}")
if [ "$current" ]; then
efibootmgr -B -b $current &>/dev/null && \
echo Successfully removed boot entry for $OSNAME
else
echo There is no EFI boot entry for $OSNAME
break
fi
done
;;
"add" | "install")
efibootmgr --create --label "$OSNAME" \
--disk $EFIDISK --part $EFIPART \
--loader $KERNEL --unicode "$CMDLINE" --verbose &>/dev/null && \
echo Successfully added boot entry for $OSNAME
#efibootmgr --create --label "$OSNAME (Rescue Mode)" \
# --disk $EFIDISK --part $EFIPART \
# --loader $KERNEL --unicode "init=/bin/sh $CMDLINE" --verbose &>/dev/null && \
# echo "Successfully added boot entry for $OSNAME (Rescue Mode)"
;;
"reinstall")
$0 remove
$0 install
;;
*)
echo Missing or invalid EFI command
esac