136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
post_install() {
 | 
						|
  THEME_NAME="melawy"
 | 
						|
 | 
						|
  if [ -f "/etc/refind-menu-generator/theme.conf" ]; then
 | 
						|
    echo "$THEME_NAME" > "/etc/refind-menu-generator/theme.conf"
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "Searching rEFInd installation in EFI partition..."
 | 
						|
  if ! __has_esp__; then
 | 
						|
    echo "EFI partition not found" >&2
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
 | 
						|
  REFIND_DIR=$(find "$ESP" -type d -iname refind)
 | 
						|
  if ! [[ -d "${REFIND_DIR}" ]]; then
 | 
						|
    echo "rEFInd not installed in $ESP" >&2
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
  echo "Found rEFInd in ${REFIND_DIR}"
 | 
						|
 | 
						|
  EFI_BOOT_DIR=$(find "$ESP" -type d -iname boot)
 | 
						|
  if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
    EFI_BOOT_DIR=$(find "$ESP" -type d -iname Boot)
 | 
						|
    if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
      EFI_BOOT_DIR=$(find "$ESP" -type d -iname BOOT)
 | 
						|
      if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
        mkdir -p "$(dirname ${REFIND_DIR})/boot"
 | 
						|
        EFI_BOOT_DIR="$(dirname ${REFIND_DIR})/boot"
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  REFIND_CONF_PATH="${REFIND_DIR}/refind.conf"
 | 
						|
 | 
						|
  RESULT=$(grep "theme" $REFIND_CONF_PATH)
 | 
						|
 | 
						|
  if [[ "$?" = "0" ]]; then
 | 
						|
    CURRENT_THEME=$(echo $RESULT | cut -d"/" -f2)
 | 
						|
    if [[ "$?" = "0" ]]; then
 | 
						|
      sed -e "s/$CURRENT_THEME/$THEME_NAME/g" -i $REFIND_CONF_PATH
 | 
						|
    fi
 | 
						|
  else
 | 
						|
    if [[ -z "$(tail -n 1 -c 1 $REFIND_CONF_PATH)" ]];then
 | 
						|
      echo "include themes/$THEME_NAME/theme.conf" >> $REFIND_CONF_PATH
 | 
						|
    else
 | 
						|
      echo -e "\ninclude themes/$THEME_NAME/theme.conf" >> $REFIND_CONF_PATH
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  cp -vf "${REFIND_DIR}/refind.conf" "${EFI_BOOT_DIR}/refind.conf"
 | 
						|
}
 | 
						|
 | 
						|
post_upgrade() {
 | 
						|
  post_install
 | 
						|
}
 | 
						|
 | 
						|
post_remove() {
 | 
						|
  THEME_NAME="melawy"
 | 
						|
 | 
						|
  if [ -f "/etc/refind-menu-generator/theme.conf" ]; then
 | 
						|
    echo "" > "/etc/refind-menu-generator/theme.conf"
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "Removal of theme from EFI partition"
 | 
						|
 | 
						|
  echo "Searching rEFInd installation in EFI partition..."
 | 
						|
  if ! __has_esp__; then
 | 
						|
    echo "EFI partition not found" >&2
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
 | 
						|
  REFIND_DIR=$(find "$ESP" -type d -iname refind)
 | 
						|
  if ! [[ -d "${REFIND_DIR}" ]]; then
 | 
						|
    echo "rEFInd not installed in $ESP" >&2
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
  echo "Found rEFInd in ${REFIND_DIR}"
 | 
						|
 | 
						|
  EFI_BOOT_DIR=$(find "$ESP" -type d -iname boot)
 | 
						|
  if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
    EFI_BOOT_DIR=$(find "$ESP" -type d -iname Boot)
 | 
						|
    if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
      EFI_BOOT_DIR=$(find "$ESP" -type d -iname BOOT)
 | 
						|
      if ! [[ -d "${EFI_BOOT_DIR}" ]]; then
 | 
						|
        mkdir -p "$(dirname ${REFIND_DIR})/boot"
 | 
						|
        EFI_BOOT_DIR="$(dirname ${REFIND_DIR})/boot"
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  REFIND_CONF_PATH="${REFIND_DIR}/refind.conf"
 | 
						|
  sed -i "/$THEME_NAME/d" $REFIND_CONF_PATH
 | 
						|
 | 
						|
  cp -vf "${REFIND_DIR}/refind.conf" "${EFI_BOOT_DIR}/refind.conf"
 | 
						|
}
 | 
						|
 | 
						|
# Copied from https://raw.githubusercontent.com/jaltuna/refind-theme-nord/main/setup.sh
 | 
						|
# Verify EFI System Partition
 | 
						|
__has_esp__() {
 | 
						|
  __find_esp__
 | 
						|
 | 
						|
  mount "$ESP" &>/dev/null
 | 
						|
  [[ -d "$ESP/EFI" ]] && return 0 || return 1
 | 
						|
}
 | 
						|
 | 
						|
__find_esp__() {
 | 
						|
  local parttype
 | 
						|
  local fstype
 | 
						|
  local device
 | 
						|
 | 
						|
  while read -r device; do
 | 
						|
    read -r parttype fstype ESP <<<"$(lsblk -o "PARTTYPE,FSTYPE,MOUNTPOINT" "$device" 2>/dev/null | awk 'NR==2')"
 | 
						|
 | 
						|
    [[ "${parttype,,}" != "c12a7328-f81f-11d2-ba4b-00a0c93ec93b" ]] && continue
 | 
						|
    [[ "${fstype,,}" != "vfat" ]] && continue
 | 
						|
    [[ -z $(findmnt -sn "$ESP") ]] && continue
 | 
						|
 | 
						|
  done <<<"$(fdisk -l 2>/dev/null | grep -i efi | cut -d " " -f 1)"
 | 
						|
 | 
						|
  if [ -z "${ESP}" ]; then
 | 
						|
    ESP=$(grep -i "/efi" /etc/fstab | awk '{print $2}')
 | 
						|
    if [ -z "${ESP}" ]; then
 | 
						|
      ESP=$(grep -i "/boot" /etc/fstab | awk '{print $2}')
 | 
						|
      if [ -z "${ESP}" ]; then
 | 
						|
        ESP=$(bootctl --print-esp-path)
 | 
						|
        if [ -z "${ESP}" ]; then
 | 
						|
          exit 1
 | 
						|
        fi
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "Found ${ESP}"
 | 
						|
  readonly ESP
 | 
						|
}
 |