#!/bin/bash

declare -F vg_free_size > /dev/null || source /var/tmp/install/storage/stutil.sh

configure_crypttab() {
  mkdir -p /etc
  local ppv uuid
  ppv=$(get_dev .ppv)
  uuid=$(get_uuid "$ppv") || return
  echo "luks-$uuid UUID=$uuid none discard,tpm2-device=auto" > /etc/crypttab
}

configure_tpm_unlocking() {
  local ppv
  has_tpm || return 0
  ppv=$(get_dev .ppv)
  [[ $ppv ]] || return
  systemd-cryptenroll --wipe-slot tpm2 --tpm2-device auto --tpm2-pcrs "" --unlock-key-file $installbase/lukskey "$ppv"
}

print_cmdline_options() {
  local vgname ppv uuid rootdev raid
  vgname=$(get_dev .vgname)
  ppv=$(get_dev .ppv)
  uuid=$(get_uuid "$ppv") || return
  rootdev=$(get_dev .lv.root.dev)
  cat <<EOF
rd.luks.uuid=$uuid
rd.lvm.vg=$vgname
root=$rootdev
EOF
  if is_data_on_raid; then
    uuid=$(get_uuid $(get_parent $(get_dev .data.disk) | sort -u))
    [[ $uuid ]] || return
    cat <<EOF
rd.md.uuid=$uuid
EOF
  fi
  get_profile ".cmdline // [] | .[]"
}

configure_cmdline() {
  mkdir -p /etc/kernel
  print_cmdline_options > /etc/kernel/cmdline
}

preinstall() {
  run configure_mdadm || return
  run configure_crypttab || return
  run configure_fstab || return
  run configure_cmdline || return
  run configure_tpm_unlocking || return
  run update_lvmdevices || return
}

return 2> /dev/null || {
  preinstall
}
