unter Archlinux mit yay, zsh und fzf etwas housekeeping betreiben

Ich wollte ein paar kleine Funktionen haben, um verwaiste Pakete besser handlen zu können.
Ihr kennt das sicherlich, dass man diese Pakete aufräumen will und halb sein system crashed, weil der Paket manager ein Installiertes Paket wäre verwaist, obwohl es das nicht ist.
Nerdfonts sollten auch installiert sein. Dann sehen die Icons in den Meldungen besser aus.

Nachfolgend der Code für die Funktion die Verwaisten Pakete zu löschen:

yay_remove_orphans() {
  local backup_dir="$HOME/.config/yay"
  local date_str
  local backup_file
  local orphans

  date_str="$(date +%Y-%m-%d_%H-%M-%S)"
  backup_file="$backup_dir/remove_orph_${date_str}.bak"

  mkdir -p "$backup_dir"

  # Verwaiste Pakete ermitteln (Newline-Split in ein Array)
  orphans=("${(@f)$(yay -Qtdq)}")

  if [[ ${#orphans[@]} -eq 0 || -z "${orphans[1]}" ]]; then
    echo "✔ Keine verwaisten Pakete gefunden."
    return 0
  fi

  # Backup schreiben
  print -l -- "${orphans[@]}" > "$backup_file"

  echo "📦 Backup der verwaisten Pakete erstellt:"
  echo "   $backup_file"
  echo
  echo "🧹 Entferne folgende Pakete:"
  print -l -- "${orphans[@]}"
  echo

  yay -Rns "${orphans[@]}"
}

Und das ist der Code, um Pakete aus dem „Backup“ wieder herzustellen.

  local backup_dir="$HOME/.config/yay"
  local backup_file
  local packages
  local selected

  # Backup-Datei auswählen
  backup_file=$(ls -1 "$backup_dir"/remove_orph_*.bak 2>/dev/null | fzf \
    --prompt="Backup auswählen: " \
    --height=40% \
    --reverse)

  [[ -z "$backup_file" ]] && {
    echo "✖ Kein Backup ausgewählt."
    return 1
  }

  # Pakete aus Backup lesen
  packages=("${(@f)$(cat "$backup_file")}")

  if [[ ${#packages[@]} -eq 0 ]]; then
    echo "✖ Backup ist leer."
    return 1
  fi

  # Pakete auswählen
  selected=("${(@f)$(printf "%s\n" "${packages[@]}" | fzf \
    --multi \
    --prompt="Pakete auswählen (TAB): " \
    --height=60% \
    --reverse)}")

  [[ ${#selected[@]} -eq 0 ]] && {
    echo "✖ Keine Pakete ausgewählt."
    return 1
  }

  echo
  echo "📦 Installiere folgende Pakete:"
  printf "  - %s\n" "${selected[@]}"
  echo

  yay -S "${selected[@]}"
}