Inital Comit Upload README and Install Script

This commit is contained in:
2026-03-17 00:47:52 +01:00
commit 8b7356e563
2 changed files with 118 additions and 0 deletions

101
install.sh Normal file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env bash
set -euo pipefail
BASE_DIR="$HOME/.config/pdev-dotfiles"
CONFIG_DIR="$HOME/.config"
BACKUP_DIR="$HOME/.config-backup-$(date +%Y%m%d-%H%M%S)"
REPOS=(
"hypr|https://git.pepe44.dev/Pepe44DEV/Hyprland-Config.git"
"waybar|https://git.pepe44.dev/Pepe44DEV/Waybar-Config.git"
"wofi|https://git.pepe44.dev/Pepe44DEV/Wofi-Config.git"
"swaync|https://git.pepe44.dev/Pepe44DEV/Swaync-Config.git"
)
PACKAGES=(
hyprland
waybar
wofi
swaync
kitty
fish
starship
cava
git
)
log() {
echo "[INFO] $1"
}
backup_config() {
local name="$1"
if [ -e "$CONFIG_DIR/$name" ]; then
mkdir -p "$BACKUP_DIR"
log "Sichere $CONFIG_DIR/$name nach $BACKUP_DIR/$name"
mv "$CONFIG_DIR/$name" "$BACKUP_DIR/$name"
fi
}
install_packages() {
if command -v pacman >/dev/null 2>&1; then
log "Installiere benötigte Pakete..."
sudo pacman -S --needed "${PACKAGES[@]}"
else
log "Pacman nicht gefunden, Paketinstallation übersprungen."
fi
}
clone_or_update_repo() {
local name="$1"
local url="$2"
local target="$BASE_DIR/$name"
if [ -d "$target/.git" ]; then
log "Update $name ..."
git -C "$target" pull
else
log "Clone $name ..."
git clone "$url" "$target"
fi
}
install_config() {
local name="$1"
local repo_path="$BASE_DIR/$name"
if [ ! -d "$repo_path" ]; then
log "Repo für $name nicht gefunden, überspringe."
return
fi
backup_config "$name"
log "Installiere $name nach $CONFIG_DIR/$name"
cp -r "$repo_path" "$CONFIG_DIR/$name"
}
main() {
mkdir -p "$BASE_DIR"
mkdir -p "$CONFIG_DIR"
install_packages
for entry in "${REPOS[@]}"; do
IFS="|" read -r name url <<< "$entry"
clone_or_update_repo "$name" "$url"
done
for entry in "${REPOS[@]}"; do
IFS="|" read -r name url <<< "$entry"
install_config "$name"
done
echo
echo "Fertig."
if [ -d "$BACKUP_DIR" ]; then
echo "Backup liegt hier: $BACKUP_DIR"
fi
}
main "$@"