#!/bin/bash # --- 1. Deine individuellen Datei-URLs --- URL_NVIM_INIT="http://DEIN_GITEA/init.lua" URL_FASTFETCH="http://DEIN_GITEA/fastfetch.jsonc" echo "🔍 Scanne System für maßgeschneidertes Setup..." # --- 2. System-Erkennung --- if [ -f /etc/os-release ]; then . /etc/os-release OS_ID=$ID OS_LIKE=$ID_LIKE elif [[ "$OSTYPE" == "darwin"* ]]; then OS_ID="macos" else OS_ID="unknown" fi # --- 3. Intelligente Paket-Installation --- echo "📦 Installiere Pakete für: $OS_ID..." SUDO="" command -v sudo >/dev/null && SUDO="sudo" case "$OS_ID" in arch|cachyos) $SUDO pacman -Syu --needed --noconfirm zsh curl git neovim fastfetch eza shadow ;; debian|ubuntu|trixie|kali) $SUDO apt update && $SUDO apt install -y zsh curl git neovim fastfetch eza ;; alpine) $SUDO apk add zsh curl git neovim fastfetch eza shadow ncurses-terminfo-base ;; *) echo "⚠️ System $OS_ID nicht explizit unterstützt, versuche Standard-ZSH..." $SUDO apt install -y zsh curl || echo "Installation fehlgeschlagen." ;; esac # --- 4. Verzeichnisse & Config-Downloads --- mkdir -p ~/.config/nvim ~/.config/fastfetch curl -fsSL "$URL_NVIM_INIT" -o ~/.config/nvim/init.lua curl -fsSL "$URL_FASTFETCH" -o ~/.config/fastfetch/fastfetch.jsonc # --- 5. Die dynamische .zshrc Erstellung --- echo "📝 Generiere optimierte .zshrc für $OS_ID..." cat < ~/.zshrc # --- Automatisch generiert am $(date) --- OS_ID="$OS_ID" OS_LIKE="$OS_LIKE" # Basis-Plugins & Theme (Zinit) ZINIT_HOME="\${XDG_DATA_HOME:-\${HOME}/.local/share}/zinit/zinit.git" [ ! -d "\$ZINIT_HOME" ] && mkdir -p "\$(dirname \$ZINIT_HOME)" && git clone https://github.com/zdharma-continuum/zinit.git "\$ZINIT_HOME" source "\${ZINIT_HOME}/zinit.zsh" zinit ice depth=1; zinit light romkatv/powerlevel10k zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-autosuggestions # Fastfetch Start (( \$+commands[fastfetch] )) && fastfetch --config ~/.config/fastfetch/fastfetch.jsonc # --- System-spezifische Aliases --- alias l='eza -lagh --icons --group-directories-first' alias c='clear' alias x='exit' EOF # --- 6. Effiziente Update-Logik einfügen --- # Hier wird nur der Code eingefügt, den das aktuelle System wirklich braucht! case "$OS_ID" in arch|cachyos) cat <<'EOF' >> ~/.zshrc update_system() { echo "--- Arch Update ---" if (( $+commands[yay] )); then yay -Syu --noconfirm; else sudo pacman -Syu --noconfirm; fi sudo pacman -Rns $(pacman -Qdtq) --noconfirm 2>/dev/null } EOF ;; debian|ubuntu|trixie|kali) cat <<'EOF' >> ~/.zshrc update_system() { echo "--- Debian/APT Update ---" sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y } EOF ;; alpine) cat <<'EOF' >> ~/.zshrc update_system() { echo "--- Alpine Update ---" sudo apk update && sudo apk upgrade } EOF ;; esac echo "alias u='update_system'" >> ~/.zshrc # --- 7. Finale & Start --- echo "✅ Setup fertig. Wechsel zu ZSH..." exec zsh -l