Autostart fuer setup-desktop.sh wird jetzt in Phase 2 erstellt (vor setup-base.sh), damit er auch bei Abbruch vorhanden ist.
91 lines
4.1 KiB
Bash
91 lines
4.1 KiB
Bash
#!/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 "════════════════════════════════════════════"
|
|
|
|
# ── 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."
|