Files
arch-system-hyprland/03-user/20-aur.sh
T

32 lines
1.3 KiB
Bash

# Install AUR packages one at a time, so a single build failure (common with the
# AUR — removed packages, broken builds) doesn't abort the rest. yay still pulls
# each package's AUR dependencies automatically. Failures are collected and
# reported at the end, and logged to ~/aur-failed.log for retrying.
LOG="$HOME/aur-failed.log"
: > "$LOG"
# Keep sudo's credential cache warm for the whole AUR run. yay installs each
# built package via `sudo pacman`; a long compile can outlast sudo's default
# 15-minute timeout and trigger a password prompt mid-run. Authenticate once,
# then refresh the timestamp in the background (self-terminating if run.sh dies).
sudo -v || die "sudo authentication failed"
{ while true; do sudo -n true; sleep 60; kill -0 "$$" 2>/dev/null || exit; done; } &
sudo_keepalive=$!
while read -r pkg; do
yay -S --needed --noconfirm "$pkg" || echo "$pkg" >> "$LOG"
done < <(grep -vE '^\s*#|^\s*$' "$REPO_ROOT/03-user/packages/aur.txt")
kill "$sudo_keepalive" 2>/dev/null || true # stop the sudo refresher
if [ -s "$LOG" ]; then
echo ""
echo "!! $(wc -l < "$LOG") AUR package(s) FAILED — retry later with:"
echo " yay -S \$(cat $LOG)"
echo " failed:"
sed 's/^/ - /' "$LOG"
else
rm -f "$LOG"
info "all AUR packages installed"
fi