macbook-setup/setup.sh

98 lines
4.4 KiB
Bash
Raw Normal View History

#!/bin/bash
# macbook-setup/setup.sh
# Post-Install-Skript für Linux auf MacBook Pro
# Klont alle Repos lokal, führt setup-base.sh aus und richtet Autostart ein
#
# Verwendung:
# curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup.sh | bash
# oder: cd macbook-setup && bash setup.sh
FORGEJO="https://git.motocamp.de"
MACBOOK_REPO="$FORGEJO/rene/macbook-setup.git"
DOTFILES_REPO="$FORGEJO/rene/dotfiles-rene.git"
# ── Farben ──────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok() { echo -e "${GREEN}$*${NC}"; }
warn() { echo -e "${YELLOW}$*${NC}"; }
fail() { echo -e "${RED}$*${NC}"; exit 1; }
# ── Root-Check ───────────────────────────────────────────────────────────
[[ $EUID -eq 0 ]] && fail "Nicht als root ausführen. sudo wird intern verwendet."
# ── Modell ermitteln ─────────────────────────────────────────────────────
if [[ "$1" == "13" || "$1" == "16" ]]; then
MODEL="$1"
else
echo ""
echo "Welches MacBook Pro?"
echo " 13 = MBP 13\" Late 2013"
echo " 16 = MBP 16\" Mid 2014 (Intel + AMD Radeon)"
read -rp "Modell [13/16]: " MODEL < /dev/tty
[[ "$MODEL" != "13" && "$MODEL" != "16" ]] && fail "Ungültiges Modell: $MODEL"
fi
echo ""
echo "════════════════════════════════════════════"
echo " macbook-setup für MBP $MODEL\""
echo "════════════════════════════════════════════"
# ── Voraussetzungen (git fehlt in Ubuntu Server Minimized) ────────────────
if ! command -v git &>/dev/null; then
echo -e "\n>>> git wird installiert..."
sudo apt update && sudo apt install -y git
fi
# ── Phase 1: Repos lokal klonen ──────────────────────────────────────────
echo -e "\n>>> Phase 1: Repos lokal bereitstellen"
REPO_DIR="$HOME/git-projekte/macbook-setup"
if [[ -d "$REPO_DIR/.git" ]]; then
ok "macbook-setup bereits vorhanden: $REPO_DIR"
else
mkdir -p "$HOME/git-projekte"
git clone "$MACBOOK_REPO" "$REPO_DIR"
ok "macbook-setup geklont"
fi
DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene"
if [[ -d "$DOTFILES_DIR/.git" ]]; then
ok "dotfiles-rene bereits vorhanden: $DOTFILES_DIR"
else
echo ""
echo "Dotfiles-Repo wird geklont (Forgejo-Zugangsdaten erforderlich):"
mkdir -p "$HOME/git-projekte"
git clone "$DOTFILES_REPO" "$DOTFILES_DIR"
ok "dotfiles-rene geklont"
fi
# ── Phase 2: Desktop-Setup als Autostart einrichten (VOR base, damit es ──
# ── bei Abbruch von setup-base.sh trotzdem vorhanden ist) ───────────────
echo -e "\n>>> Phase 2: setup-desktop.sh als Autostart einrichten"
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/macbook-setup-desktop.desktop <<DTEOF
[Desktop Entry]
Type=Application
Name=MacBook Setup Desktop
Exec=xfce4-terminal -e "bash -c 'bash $REPO_DIR/setup-desktop.sh 2>&1 | tee /tmp/setup-desktop.log; echo; echo Setup abgeschlossen - Enter zum Schliessen; read'"
Hidden=false
X-GNOME-Autostart-enabled=true
DTEOF
ok "Autostart eingerichtet (lokal: $REPO_DIR)"
# ── Phase 3: System-Setup (als root) ────────────────────────────────────
echo -e "\n>>> Phase 3: setup-base.sh (System)"
sudo bash "$REPO_DIR/setup-base.sh" "$MODEL"
ok "Phase 3 abgeschlossen"
echo ""
echo "════════════════════════════════════════════"
echo -e " ${GREEN}Vorbereitung abgeschlossen!${NC}"
echo "════════════════════════════════════════════"
echo ""
echo "Nächster Schritt:"
echo " sudo reboot"
echo ""
echo "Nach dem Reboot in XFCE einloggen —"
echo "setup-desktop.sh startet automatisch."