omarchy-config/install.sh

101 lines
2.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIGS_DIR="$REPO_DIR/configs"
echo "========================================"
echo " Milan's Omarchy Setup Installer"
echo "========================================"
echo
#
# Update system
#
echo "[1/5] Updating system..."
yay -Syu --noconfirm
#
# Install packages
#
echo
echo "[2/5] Installing packages..."
if [[ -f "$REPO_DIR/packages.txt" ]]; then
yay -S --needed --noconfirm $(<"$REPO_DIR/packages.txt")
fi
if [[ -s "$REPO_DIR/aur-packages.txt" ]]; then
yay -S --needed --noconfirm $(<"$REPO_DIR/aur-packages.txt")
fi
#
# Symlink configs
#
echo
echo "[3/5] Linking configs..."
mkdir -p "$HOME/.config"
for item in "$CONFIGS_DIR"/*; do
name="$(basename "$item")"
target="$HOME/.config/$name"
# Skip if already linked correctly
if [[ -L "$target" ]]; then
if [[ "$(readlink -f "$target")" == "$(readlink -f "$item")" ]]; then
echo "$name already linked"
continue
fi
fi
# Backup existing config
if [[ -e "$target" && ! -L "$target" ]]; then
backup="${target}.backup.$(date +%Y%m%d-%H%M%S)"
echo "Backing up $name -> $(basename "$backup")"
mv "$target" "$backup"
fi
rm -rf "$target"
ln -s "$item" "$target"
echo "Linked $name"
done
#
# Enable user services
#
echo
echo "[4/5] Enabling user services..."
if [[ -f "$REPO_DIR/system/user-services.txt" ]]; then
awk '{print $1}' "$REPO_DIR/system/user-services.txt" |
while read -r service; do
[[ -z "$service" ]] && continue
systemctl --user enable "$service" >/dev/null 2>&1 || true
done
fi
#
# Font cache
#
echo
echo "[5/5] Refreshing font cache..."
fc-cache -fv >/dev/null 2>&1 || true
echo
echo "========================================"
echo " Finished!"
echo "========================================"
echo
echo "You may want to:"
echo " • Log out and back in"
echo " • Run: omarchy-theme (if needed)"
echo " • Restart Waybar/Hyprland if configs changed"
echo