#!/usr/bin/bash
# zmogrify - Run dracut and configure grub to boot with root on zfs.

. /etc/profile.d/zfs.sh

kver=$1

[[ -z "${kver}" ]] && kver=$(uname -r)

if ! dkms status --kernelver ${kver} -m spl | grep -q installed 2>/dev/null; then
  splver=$(ls -d /usr/src/spl*| xargs -I{} basename {}|sort -V|tail -n1|cut -d'-' -f2)
  dkms install -m spl/$splver --kernelver ${kver}
fi

if ! dkms status --kernelver ${kver} -m zfs | grep -q installed 2>/dev/null; then
  zfsver=$(ls -d /usr/src/zfs*| xargs -I{} basename {}|sort -V|tail -n1|cut -d'-' -f2)
  dkms install -m zfs/$zfsver --kernelver ${kver}
fi



/usr/bin/dracut -fv --kver $kver
md5sum /boot/initramfs-${kver}.img > /boot/initramfs-${kver}.md5sum

#make rescue image usable
if [[ -x /etc/kernel/postinst.d/51-dracut-rescue-postinst.sh ]];then
  /etc/kernel/postinst.d/51-dracut-rescue-postinst.sh $@
fi

if [[ -z "$(mount|grep /boot/efi)" ]];then
  mount /boot/efi
  mounted='yes'
fi

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
grubby --set-default-index 0
mkdir -p /boot/efi/EFI/fedora/x86_64-efi
cp -a /usr/lib/grub/x86_64-efi/zfs.mod /boot/efi/EFI/fedora/x86_64-efi

if [[ "x${mounted}" == "xyes" ]];then
  umount /boot/efi
fi

