#!/bin/sh

#See for EFI present
if [ -d /sys/firmware/efi ]; then

#See for Windows EFI string in EFI BIOS
WINDOWS_EFI=$(efibootmgr -v | grep WINDOWS | sed 's/.*HD/HD/;s/WINDOWS.*/WINDOWS/')
if [ -z "$WINDOWS_EFI" ]; then
        exit 0
fi
WIN_EFI_PATH=$(echo $WINDOWS_EFI | sed 's/.*\(\\EFI\)/\1/i;s/\(\.efi\).*/\1/i')
WIN_EFI_PATH_LINUX=$(echo $WIN_EFI_PATH | sed 's/\\/\//g')
WIN_EFI_PARTUUID=$(echo $WINDOWS_EFI | sed 's/.*,//;s/).*//')

#Determine EFI UUID
WIN_EFI_DRIVE=$(blkid -s PARTUUID | grep -i $WIN_EFI_PARTUUID | awk '{print $1}' | sed 's/://')
WIN_EFI_UUID=$(blkid -s UUID $WIN_EFI_DRIVE | sed 's/.*="//;s/".*//')

cat << EOF
menuentry "Microsoft Windows Vista/7/8 UEFI-GPT" {
  insmod part_gpt
  insmod fat
  insmod search_fs_uuid
  insmod chain
  search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 ${WIN_EFI_UUID}
  chainloader $WIN_EFI_PATH_LINUX
}
EOF

fi
