Files
fluffy-pancake/files/etc/skel/.config/firstboot/firstboot-setup.sh
T

332 lines
9.5 KiB
Bash
Raw Normal View History

2026-03-12 20:54:23 +01:00
#!/usr/bin/env bash
set -euo pipefail
2026-03-12 21:09:19 +01:00
LOG="$HOME/.local/state/firstboot-setup.log"
2026-03-12 20:54:23 +01:00
exec > >(tee -a "$LOG") 2>&1
abort() {
2026-03-13 10:04:21 +01:00
zenity --question \
--title="Setup abbrechen?" \
--text="Der EinrichtungsAssistent wird dann nicht erneut angezeigt.
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
Alle Anwendungen können jederzeit über den COSMICShop installiert oder entfernt werden.
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
Möchtest du den SetupAssistenten wirklich abbrechen?"
2026-03-12 20:54:23 +01:00
if [[ $? -eq 0 ]]; then
2026-03-12 21:09:19 +01:00
rm -f "$HOME/.config/firstboot/run"
2026-03-12 20:54:23 +01:00
systemctl --user disable firstboot-setup.service
exit 0
fi
return 0
}
ensure_flathub() {
flatpak remote-list --columns=name 2>/dev/null | grep -qx flathub || \
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
}
install_brew_and_setup_path() {
if ! command -v brew >/dev/null 2>&1; then
2026-03-13 10:34:08 +01:00
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2026-03-12 20:54:23 +01:00
fi
local BREW_PREFIX="/home/linuxbrew/.linuxbrew"
local BREW_BIN="$BREW_PREFIX/bin/brew"
[[ -x "$BREW_BIN" ]] || BREW_BIN="$(command -v brew)"
eval "$("$BREW_BIN" shellenv)"
for rc in "$HOME/.bashrc" "$HOME/.zshrc"; do
[[ -f "$rc" ]] || continue
grep -q 'brew shellenv' "$rc" || {
echo "" >> "$rc"
echo "# Homebrew" >> "$rc"
echo "eval \"\$($BREW_BIN shellenv)\"" >> "$rc"
}
done
}
# ----------------------------
# Welcome
# ----------------------------
2026-03-13 10:04:21 +01:00
zenity --info \
--title="Willkommen bei COSMIC" \
--text="Dieser Assistent erleichtert dir den Einstieg, indem er eine Auswahl gängiger Anwendungen anbietet.
2026-03-12 20:54:23 +01:00
Wichtig:
2026-03-13 10:04:21 +01:00
• Alle hier angebotenen Anwendungen können jederzeit auch über den COSMICShop installiert oder entfernt werden.
• Der Wizard ist optional und kann komplett übersprungen werden.
• Er deckt nur eine Auswahl verbreiteter Anwendungen ab nicht alles.
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
Nach Abschluss wird dieser Assistent nicht erneut angezeigt." \
|| abort
2026-03-12 20:54:23 +01:00
# ----------------------------
2026-03-13 10:04:21 +01:00
# Auswahlfunktionen
2026-03-12 20:54:23 +01:00
# ----------------------------
2026-03-13 10:04:21 +01:00
choose_list() {
local title="$1"
local text="$2"
shift 2
local result
result=$(zenity --list \
--title="$title" \
--text="$text" \
--checklist \
--column="Auswahl" \
--column="ID" \
--column="Beschreibung" \
FALSE "$@" \
--separator="|" \
) || abort
echo "$result"
}
2026-03-12 20:54:23 +01:00
# ----------------------------
# Browser
# ----------------------------
2026-03-13 10:04:21 +01:00
BROWSERS=$(choose_list \
"Browser" \
"Webbrowser werden für viele Aufgaben benötigt." \
firefox "Mozilla Firefox (empfohlen)" \
chromium "Chromium (OpenSource Basis)" \
brave "Brave (datenschutzorientiert)" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Office
# ----------------------------
2026-03-13 10:04:21 +01:00
OFFICE=$(choose_list \
"Office & Dokumente" \
"Anwendungen für Dokumente, PDFs und Büroarbeit:" \
libreoffice "LibreOffice (OfficeSuite)" \
onlyoffice "OnlyOffice (MSOffice‑ähnlich)" \
collabora "Collabora Office" \
papers "Papers (PDFViewer)" \
simplescan "Simple Scan" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Graphics
# ----------------------------
2026-03-13 10:04:21 +01:00
GRAPHICS=$(choose_list \
"Grafik & Kreativ" \
"Bildbearbeitung, Illustration und Vektorgrafik:" \
gimp "GIMP" \
krita "Krita" \
inkscape "Inkscape" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Media
# ----------------------------
2026-03-13 10:04:21 +01:00
MEDIA=$(choose_list \
"Medien & Unterhaltung" \
"Wiedergabe von Audio und Video:" \
vlc "VLC Media Player" \
2026-03-13 10:20:03 +01:00
showtime "Gnome Video Player"
2026-03-13 10:04:21 +01:00
spotify "Spotify Client" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
2026-03-13 10:04:21 +01:00
# Audio/Video Editing
2026-03-12 20:54:23 +01:00
# ----------------------------
2026-03-13 10:04:21 +01:00
AV=$(choose_list \
"Audio & VideoBearbeitung" \
"Erstellung und Bearbeitung von Audio und Videoinhalten:" \
shotcut "Shotcut" \
kdenlive "Kdenlive" \
audacity "Audacity" \
ardour "Ardour" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Games
# ----------------------------
2026-03-13 10:04:21 +01:00
GAMES=$(choose_list \
"Spiele" \
"Plattformen für PCSpiele:" \
steam "Steam" \
lutris "Lutris" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Mail
# ----------------------------
2026-03-13 10:04:21 +01:00
MAIL=$(choose_list \
"EMail" \
"DesktopEMailProgramme:" \
thunderbird "Thunderbird" \
geary "Geary" \
evolution "Evolution" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Development
# ----------------------------
2026-03-13 10:04:21 +01:00
DEV=$(choose_list \
"Entwicklung" \
"Werkzeuge für SoftwareEntwicklung:" \
vscode "Visual Studio Code" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# System Tools
# ----------------------------
2026-03-13 10:04:21 +01:00
SYSTEM=$(choose_list \
"SystemWerkzeuge" \
"Hilfsprogramme für SystemKonfiguration:" \
flatseal "Flatseal" \
)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Homebrew
# ----------------------------
2026-03-13 10:04:21 +01:00
zenity --question \
--title="Homebrew (optional)" \
--text="Homebrew ist ein zusätzlicher Paketmanager für Entwickler und CLIWerkzeuge.
2026-03-12 20:54:23 +01:00
• Installation im Benutzerverzeichnis
• Keine Änderung am Basissystem
2026-03-13 10:04:21 +01:00
• Komplett optional"
USE_BREW=$([[ $? -eq 0 ]] && echo yes || echo no)
2026-03-12 20:54:23 +01:00
2026-03-13 10:20:03 +01:00
# ----------------------------
# AutoUpdate
# ----------------------------
zenity --question \
--title="Automatische Systemaktualisierung" \
--text="Wenn diese Option aktiviert ist, prüft das System einmal pro Woche automatisch auf neue Aktualisierungen und installiert sie im Hintergrund.
Du kannst den Aktualisierungsdienst jederzeit manuell starten mit:
systemctl --user start bootc-update.service
Ohne automatische Updates kannst du Aktualisierungen jederzeit selbst anstoßen mit:
bootc upgrade"
AUTO_UPDATE=$([[ $? -eq 0 ]] && echo yes || echo no)
2026-03-12 20:54:23 +01:00
# ----------------------------
# Summary
# ----------------------------
2026-03-13 10:04:21 +01:00
SUMMARY="Browser: ${BROWSERS:-keine}
Office: ${OFFICE:-keine}
Grafik: ${GRAPHICS:-keine}
Medien: ${MEDIA:-keine}
Audio/Video: ${AV:-keine}
Spiele: ${GAMES:-keine}
EMail: ${MAIL:-keine}
Entwicklung: ${DEV:-keine}
System: ${SYSTEM:-keine}
2026-03-12 20:54:23 +01:00
2026-03-13 10:20:03 +01:00
Homebrew: $USE_BREW
Automatische Updates: $AUTO_UPDATE"
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
zenity --question \
--title="Zusammenfassung" \
--text="Bitte bestätige die Installation:\n\n$SUMMARY" \
|| abort
2026-03-12 20:54:23 +01:00
# ----------------------------
# Installation
# ----------------------------
ensure_flathub
(
echo "10"; echo "# Installiere Browser..."
2026-03-13 10:04:21 +01:00
for b in ${BROWSERS//|/ }; do
2026-03-12 20:54:23 +01:00
case "$b" in
firefox) flatpak install -y flathub org.mozilla.firefox ;;
chromium) flatpak install -y flathub org.chromium.Chromium ;;
brave) flatpak install -y flathub com.brave.Browser ;;
esac
done
echo "25"; echo "# Installiere Office..."
2026-03-13 10:04:21 +01:00
[[ "$OFFICE" == *libreoffice* ]] && flatpak install -y flathub org.libreoffice.LibreOffice
[[ "$OFFICE" == *onlyoffice* ]] && flatpak install -y flathub org.onlyoffice.desktopeditors
[[ "$OFFICE" == *collabora* ]] && flatpak install -y flathub com.collabora.CollaboraOffice
[[ "$OFFICE" == *papers* ]] && flatpak install -y flathub org.gnome.Papers
[[ "$OFFICE" == *simplescan* ]] && flatpak install -y flathub org.gnome.SimpleScan
2026-03-12 20:54:23 +01:00
echo "40"; echo "# Installiere GrafikTools..."
2026-03-13 10:04:21 +01:00
[[ "$GRAPHICS" == *gimp* ]] && flatpak install -y flathub org.gimp.GIMP
[[ "$GRAPHICS" == *krita* ]] && flatpak install -y flathub org.kde.krita
[[ "$GRAPHICS" == *inkscape* ]] && flatpak install -y flathub org.inkscape.Inkscape
2026-03-12 20:54:23 +01:00
echo "55"; echo "# Installiere Medien..."
2026-03-13 10:04:21 +01:00
[[ "$MEDIA" == *vlc* ]] && flatpak install -y flathub org.videolan.VLC
[[ "$MEDIA" == *spotify* ]] && flatpak install -y flathub com.spotify.Client
2026-03-13 10:20:03 +01:00
[[ "$MEDIA" == *showtime* ]] && flatpak install -y flathub org.gnome.Showtime
2026-03-12 20:54:23 +01:00
echo "70"; echo "# Installiere Audio/VideoTools..."
2026-03-13 10:04:21 +01:00
[[ "$AV" == *shotcut* ]] && flatpak install -y flathub org.shotcut.Shotcut
[[ "$AV" == *kdenlive* ]] && flatpak install -y flathub org.kde.kdenlive
[[ "$AV" == *audacity* ]] && flatpak install -y flathub org.audacityteam.Audacity
[[ "$AV" == *ardour* ]] && flatpak install -y flathub org.ardour.Ardour
2026-03-12 20:54:23 +01:00
echo "85"; echo "# Installiere SpielePlattformen..."
2026-03-13 10:04:21 +01:00
[[ "$GAMES" == *steam* ]] && flatpak install -y flathub com.valvesoftware.Steam
[[ "$GAMES" == *lutris* ]] && flatpak install -y flathub net.lutris.Lutris
2026-03-12 20:54:23 +01:00
echo "90"; echo "# Installiere EMailClients..."
2026-03-13 10:04:21 +01:00
[[ "$MAIL" == *thunderbird* ]] && flatpak install -y flathub org.mozilla.Thunderbird
[[ "$MAIL" == *geary* ]] && flatpak install -y flathub org.gnome.Geary
[[ "$MAIL" == *evolution* ]] && flatpak install -y flathub org.gnome.Evolution
2026-03-12 20:54:23 +01:00
echo "95"; echo "# Installiere Entwicklung..."
2026-03-13 10:04:21 +01:00
[[ "$DEV" == *vscode* ]] && flatpak install -y flathub com.visualstudio.code
2026-03-12 20:54:23 +01:00
echo "97"; echo "# Installiere SystemTools..."
2026-03-13 10:04:21 +01:00
[[ "$SYSTEM" == *flatseal* ]] && flatpak install -y flathub com.github.tchx84.Flatseal
2026-03-12 20:54:23 +01:00
echo "98"; echo "# Homebrew..."
[[ "$USE_BREW" == yes ]] && install_brew_and_setup_path
echo "100"; echo "# Fertig."
2026-03-13 10:04:21 +01:00
) | zenity --progress \
--title="Installation läuft" \
--text="Bitte warten..." \
--percentage=0 \
--auto-close
2026-03-12 20:54:23 +01:00
2026-03-13 10:20:03 +01:00
# ----------------------------
# AutoUpdate aktivieren
# ----------------------------
if [[ "$AUTO_UPDATE" == yes ]]; then
systemctl --user enable --now bootc-update.timer
fi
2026-03-12 20:54:23 +01:00
# ----------------------------
# Mark wizard as done
# ----------------------------
2026-03-12 21:09:19 +01:00
rm -f "$HOME/.config/firstboot/run"
2026-03-13 10:04:21 +01:00
systemctl --user disable firstboot-setup.service
2026-03-12 21:09:19 +01:00
2026-03-13 10:04:21 +01:00
zenity --info \
--title="Fertig" \
--text="Die Einrichtung ist abgeschlossen.
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
Weitere Anwendungen kannst du jederzeit über den COSMICShop installieren.
2026-03-12 20:54:23 +01:00
Updates:
• Installierte Anwendungen werden über den COSMICShop aktualisiert.
• HomebrewPakete können mit folgendem Befehl aktualisiert werden:
2026-03-13 10:04:21 +01:00
brew update && brew upgrade
2026-03-12 20:54:23 +01:00
2026-03-13 10:04:21 +01:00
Der SetupWizard wird nicht erneut gestartet."