#!/bin/bash set -euo pipefail PILL_REPO="$HOME/gentoo-pill" HOSTNAME_TAG="${HOSTNAME:-$(hostname)}" HOST_DIR="$PILL_REPO/hosts/$HOSTNAME_TAG" echo "Syncing configuration for: $HOSTNAME_TAG" if [[ -d "$PILL_REPO/.git" ]]; then git -C "$PILL_REPO" pull --rebase --autostash else echo "Error: repo not found at $PILL_REPO" exit 1 fi mkdir -p "$HOST_DIR" echo "Syncing World file component..." cp /var/lib/portage/world "$HOST_DIR/world" CONFIGS=(package.use package.accept_keywords package.license package.mask package.unmask package.env repos.conf) echo "Syncing Portage components..." for type in "${CONFIGS[@]}"; do local_src="/etc/portage/$type" repo_dest="$HOST_DIR/$type" # rm -rf "$repo_dest" if [[ -e "$local_src" ]]; then rsync -a --delete --copy-links "$local_src" "$HOST_DIR/" else rm -rf "$repo_dest" fi done echo "Pushing..." cd "$PILL_REPO" if [[ -n $(git status --porcelain) ]]; then git add . git commit -m "sync: $HOSTNAME_TAG $(date +'%Y-%m-%d %H:%M')" git push echo "Changes pushed successfully." else echo "No changes" fi