From e6ab66789f6e4de556c0b348406c91eddd5643a5 Mon Sep 17 00:00:00 2001
From: humocs-man <251756307+humocs-man@users.noreply.github.com>
Date: Mon, 6 Apr 2026 17:32:42 +0200
Subject: [PATCH] Delete files/etc/skel/.config/firstboot directory
---
.../skel/.config/firstboot/firstboot-setup.sh | 391 ------------------
files/etc/skel/.config/firstboot/run | 1 -
.../skel/.config/firstboot/wait-and-run.sh | 15 -
3 files changed, 407 deletions(-)
delete mode 100644 files/etc/skel/.config/firstboot/firstboot-setup.sh
delete mode 100644 files/etc/skel/.config/firstboot/run
delete mode 100644 files/etc/skel/.config/firstboot/wait-and-run.sh
diff --git a/files/etc/skel/.config/firstboot/firstboot-setup.sh b/files/etc/skel/.config/firstboot/firstboot-setup.sh
deleted file mode 100644
index 802be2d..0000000
--- a/files/etc/skel/.config/firstboot/firstboot-setup.sh
+++ /dev/null
@@ -1,391 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-LOG="$HOME/.local/state/firstboot-setup.log"
-mkdir -p "$(dirname "$LOG")"
-exec > >(tee -a "$LOG") 2>&1
-
-# ------------------------------------------------------------
-# WICHTIG: Dynamisches Warten auf Flatpak-Bereitschaft
-# ------------------------------------------------------------
-echo "=== Initialisiere User-Session und Flatpak ===" >&2
-
-MAX_WAIT=60
-WAITED=0
-
-while [[ $WAITED -lt $MAX_WAIT ]]; do
- if systemctl --user is-active >/dev/null 2>&1; then
- if flatpak --version >/dev/null 2>&1; then
- echo "✓ Flatpak ist nach $WAITED Sekunden bereit." >&2
- break
- fi
-
- echo "$(date +%T.%N) - Flatpak nicht verfügbar, starte Dienst..." >&2
- systemctl --user start org.freedesktop.Flatpak.service 2>&1 || true
- sleep 3
- fi
-
- ((WAITED++)) || true
- sleep 1
-
- if [[ $((MAX_WAIT - WAITED)) -le 5 ]]; then
- echo "⚠️ Wartezeit läuft kurz ($WAITED/$MAX_WAIT)..." >&2
- fi
-done
-
-if [[ $WAITED -ge $MAX_WAIT ]]; then
- echo "❌ FATAL: Flatpak konnte nicht innerhalb von $MAX_WAIT Sekunden initialisiert werden!" >&2
- exit 1
-fi
-
-# ------------------------------------------------------------
-# XDG-Umgebung sicherstellen
-# ------------------------------------------------------------
-export HOME="$HOME"
-export USER=$(whoami)
-export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
-export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
-
-mkdir -p "$XDG_DATA_HOME"
-mkdir -p "$(dirname "$LOG")"
-
-echo "✓ XDG-Umgebung konfiguriert: XDG_DATA_HOME=$XDG_DATA_HOME" >&2
-
-
-# ------------------------------------------------------------
-# Helper-Funktionen mit besserer Fehlerbehandlung
-# ------------------------------------------------------------
-ensure_flathub() {
- if ! flatpak remote-list --columns=name 2>/dev/null | grep -qx flathub; then
- echo "Aktiviere Flathub..." >&2
- flatpak remote-add --if-not-exists flathub \
- https://dl.flathub.org/repo/flathub.flatapkrepo || {
- echo "❌ FATAL: Konnte Flathub nicht aktivieren!" >&2
- exit 1
- }
- fi
-
- # Warte kurz, bis das Repository geladen ist (wichtig!)
- sleep 5
-}
-
-flatpak_user_install() {
- local remote="$1"
- local app="$2"
-
- export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
-
- if flatpak info --user "$app" >/dev/null 2>&1; then
- echo "Flatpak (user) bereits installiert: $app"
- return 0
- fi
-
- echo "Installiere Flatpak (user): $app" >&2
-
- # Füge Fehlerbehandlung hinzu
- if ! flatpak install --user -y "$remote" "$app"; then
- echo "❌ FATAL: Flatpak-Installation fehlgeschlagen: $app" >&2
-
- # Versuche, das Problem zu diagnostizieren
- echo "Diagnose..." >&2
- flatpak search "$app" || true
- exit 1
- fi
-
- echo "✓ Installation erfolgreich: $app" >&2
-}
-
-# ------------------------------------------------------------
-# Rest des Skripts (wie zuvor) ...
-
-
-# ------------------------------------------------------------
-# Zenity‑Checkliste
-# OK -> stdout = Auswahl, return 0
-# Cancel -> abort(); Nein => return 2
-# ------------------------------------------------------------
-choose_list() {
- local title="$1"
- local text="$2"
- shift 2
-
- if (( $# % 2 != 0 )); then
- echo "choose_list: Ungerade Anzahl Argumente." >&2
- exit 1
- fi
-
- local -a rows=()
- while (( $# )); do
- rows+=(FALSE "$1" "$2")
- shift 2
- done
-
- local result
- if result=$(zenity --list \
- --title="$title" \
- --text="$text" \
- --width=800 \
- --height=600 \
- --checklist \
- --column="Auswahl" \
- --column="Anwendung" \
- --column="Beschreibung" \
- --separator="|" \
- "${rows[@]}"); then
-
- # WICHTIG: Alle Zeilen zusammenführen → eine einzige Zeile
- echo "$result" | tr -d '\n'
- return 0
- else
- abort
- return 2
- fi
-}
-
-# ------------------------------------------------------------
-# Welcome
-# ------------------------------------------------------------
-zenity --info \
- --title="Willkommen bei COSMIC" \
- --text="Willkommen bei COSMIC\n
-Dieser Assistent hilft dir beim Einstieg in dein System.\n
-Hinweise:\n
-• Alle Anwendungen können später jederzeit über den COSMIC‑Shop installiert oder entfernt werden.\n
-• Der Assistent ist optional und erscheint nur einmal.\n
-• Die Auswahl deckt gängige Anwendungen ab, aber nicht alles." \
- || abort
-
-# ------------------------------------------------------------
-# Auswahl-Runner
-# return 0 -> weiter
-# return 2 -> gleiche Liste erneut
-# ------------------------------------------------------------
-run_list() {
- local varname="$1"
- shift
-
- while true; do
- local result
- if result=$(choose_list "$@"); then
- printf -v "$varname" "%s" "$result"
- break
- else
- local code=$?
- [[ $code -eq 2 ]] && continue
- exit 1
- fi
- done
-}
-
-# ------------------------------------------------------------
-# Listen
-# ------------------------------------------------------------
-run_list BROWSERS_LIST \
- "Browser" \
- "Browser auswählen\nWähle einen oder mehrere Webbrowser aus." \
- firefox "Ausgewogen, weit verbreitet, guter Datenschutz" \
- chromium "Schlank, schnell, Open‑Source‑Basis vieler Browser" \
- brave "Starker Fokus auf Datenschutz und Werbeblockierung"
-
-run_list OFFICE_LIST \
- "Office & Dokumente" \
- "Office & Dokumente\nAnwendungen für Büroarbeit und PDFs." \
- libreoffice "Umfangreiche Office‑Suite für lokale Dokumente" \
- onlyoffice "Moderne Oberfläche, hohe MS‑Office‑Kompatibilität" \
- collabora "LibreOffice‑Technologie mit Fokus auf Zusammenarbeit" \
- papers "Leichter PDF‑Viewer zum Lesen und Kommentieren" \
- simplescan "Einfaches Scannen von Dokumenten und Bildern"
-
-run_list GRAPHICS_LIST \
- "Grafik & Kreativ" \
- "Grafik & Kreativ\nWerkzeuge für Bildbearbeitung und Illustration." \
- gimp "Leistungsstarke Bildbearbeitung für Fotos" \
- krita "Digitale Malerei und Illustration" \
- inkscape "Vektorgrafiken für Logos und Icons"
-
-run_list MEDIA_LIST \
- "Medien & Unterhaltung" \
- "Medien & Unterhaltung\nAudio‑ und Video‑Wiedergabe." \
- vlc "Spielt nahezu alle Audio‑ und Videoformate ab" \
- showtime "Einfacher Videoplayer mit klarer Oberfläche" \
- spotify "Streaming‑Dienst für Musik und Podcasts"
-
-run_list AV_LIST \
- "Audio & Video‑Bearbeitung" \
- "Audio & Video‑Bearbeitung\nWerkzeuge für kreative Medienproduktion." \
- shotcut "Einfacher Videoeditor für schnelle Projekte" \
- kdenlive "Umfangreicher Videoeditor mit vielen Effekten" \
- audacity "Aufnahme und Bearbeitung von Audio" \
- ardour "Professionelle Audio‑Produktion"
-
-run_list GAMES_LIST \
- "Spiele" \
- "Spiele‑Plattformen\nPlattformen für PC‑Spiele." \
- steam "Große Spielebibliothek und Community‑Funktionen" \
- lutris "Zentrale Verwaltung von Spielen aus vielen Quellen" \
- sober "Spiele Roblox auf Linux"
-
-run_list MAIL_LIST \
- "E‑Mail" \
- "E‑Mail‑Programme\nDesktop‑Clients für E‑Mail und Kalender." \
- thunderbird "Leistungsstarker Mail‑Client mit Erweiterungen" \
- geary "Schlanker Mail‑Client mit einfacher Bedienung" \
- evolution "E‑Mail, Kalender und Kontakte in einer Anwendung"
-
-run_list KI_LIST \
- "Anwendungen für lokale KI" \
- "KI-Anwenungen\nProgramme für lokale KI-Anwendungen" \
- alpaca "All-In-One-Anwendung für lokale Chat- und RAG-Nutzung" \
- gpt4all "All-In-One-Anwendung von NomicAI"
-
-run_list DEV_LIST \
- "Entwicklung" \
- "Entwicklung\nWerkzeuge für Software‑Entwicklung." \
- vscode "Beliebter Code‑Editor mit vielen Erweiterungen"
-
-run_list SYSTEM_LIST \
- "System‑Werkzeuge" \
- "System‑Werkzeuge\nHilfsprogramme für Konfiguration und Verwaltung." \
- flatseal "Verwaltung von Flatpak‑Berechtigungen"
-
-if zenity --question \
- --title="Homebrew installieren?" \
- --width=500 \
- --text="Homebrew installieren?\n
-Homebrew ist ein Paketmanager für Kommandozeilen‑Werkzeuge.\n
-Er eignet sich besonders für Entwickler und fortgeschrittene Nutzer.\n
-\n
-Möchtest du Homebrew installieren?"
-then
- echo "Installiere Homebrew (non‑interactive)…"
- systemctl --user enable --now firstboot-brew-install@"$USER".service &
- cosmic-term --bash -c "journalctl -fu firstboot-brew-install@$USER.service" &
-else
- echo "Homebrew wird nicht installiert."
-fi
-
-if zenity --question \
- --title="Automatische Updates aktivieren?" \
- --width=500 \
- --text="Automatische System‑Updates\n
-Das System kann regelmäßig image‑basierte Updates automatisch installieren.\n
-\n
-Empfohlen für die meisten Nutzer.\n
-\n
-Möchtest du automatische Updates aktivieren?"
-then
- echo "Aktiviere automatische Updates…"
-
- BOOTC_TIMER=$(systemctl list-unit-files \
- | awk '/bootc-.*fetch.*apply.*updates.*\.timer/ {print $1; exit}')
-
- if [ -n "$BOOTC_TIMER" ]; then
- systemctl enable --now "$BOOTC_TIMER"
- else
- echo "Kein bootc Auto-Update Timer gefunden." >> /tmp/firstboot-debug.log
- fi
-
-else
- echo "Automatische Updates bleiben deaktiviert."
-fi
-
-# ------------------------------------------------------------
-# Installation
-# ------------------------------------------------------------
-ensure_flathub
-
-(
- echo "10"; echo "# Installiere Anwendungen…"
-
- for b in ${BROWSERS_LIST//|/ }; do
- case "$b" in
- firefox) flatpak_user_install flathub org.mozilla.firefox ;;
- chromium) flatpak_user_install flathub org.chromium.Chromium ;;
- brave) flatpak_user_install flathub com.brave.Browser ;;
- esac
- done
-
- for o in ${OFFICE_LIST//|/ }; do
- case "$o" in
- libreoffice) flatpak_user_install flathub org.libreoffice.LibreOffice ;;
- onlyoffice) flatpak_user_install flathub org.onlyoffice.desktopeditors ;;
- collabora) flatpak_user_install flathub com.collabora.Office ;;
- papers) flatpak_user_install flathub org.gnome.Papers ;;
- simplescan) flatpak_user_install flathub org.gnome.SimpleScan ;;
- esac
- done
-
- for g in ${GRAPHICS_LIST//|/ }; do
- case "$g" in
- gimp) flatpak_user_install flathub org.gimp.GIMP ;;
- krita) flatpak_user_install flathub org.kde.krita ;;
- inkscape) flatpak_user_install flathub org.inkscape.Inkscape ;;
- esac
- done
-
- for m in ${MEDIA_LIST//|/ }; do
- case "$m" in
- vlc) flatpak_user_install flathub org.videolan.VLC ;;
- showtime) flatpak_user_install flathub org.gnome.Showtime ;;
- spotify) flatpak_user_install flathub com.spotify.Client ;;
- esac
- done
-
- for a in ${AV_LIST//|/ }; do
- case "$a" in
- shotcut) flatpak_user_install flathub org.shotcut.Shotcut ;;
- kdenlive) flatpak_user_install flathub org.kde.kdenlive ;;
- audacity) flatpak_user_install flathub org.audacityteam.Audacity ;;
- ardour) flatpak_user_install flathub org.ardour.Ardour ;;
- esac
- done
-
- for g in ${GAMES_LIST//|/ }; do
- case "$g" in
- steam) flatpak_user_install flathub com.valvesoftware.Steam ;;
- lutris) flatpak_user_install flathub net.lutris.Lutris ;;
- sober) flatpak_user_install flathub org.vinegarhq.Sober ;;
- esac
- done
-
- for m in ${MAIL_LIST//|/ }; do
- case "$m" in
- thunderbird) flatpak_user_install flathub org.mozilla.Thunderbird ;;
- geary) flatpak_user_install flathub org.gnome.Geary ;;
- evolution) flatpak_user_install flathub org.gnome.Evolution ;;
- esac
- done
-
- for m in ${KI_LIST//|/ }; do
- case "$m" in
- alpaca) flatpak_user_install flathub com.jeffser.Alpaca ;;
- gpt4all) flatpak_user_install flathub io.gpt4all.gpt4all ;;
- esac
- done
-
- for d in ${DEV_LIST//|/ }; do
- [[ "$d" == vscode ]] && flatpak_user_install flathub com.visualstudio.code
- done
-
- for s in ${SYSTEM_LIST//|/ }; do
- [[ "$s" == flatseal ]] && flatpak_user_install flathub com.github.tchx84.Flatseal
- done
-
- echo "100"; echo "# Fertig."
-) | zenity --progress \
- --title="Installation läuft" \
- --text="Bitte warten…" \
- --percentage=0 \
- --auto-close
-
-# ------------------------------------------------------------
-# Wizard done
-# ------------------------------------------------------------
-rm -f "$HOME/.config/firstboot/run"
-systemctl --user disable firstboot-setup.service >/dev/null 2>&1 || true
-
-zenity --info \
- --title="Fertig" \
- --text="Die Einrichtung ist abgeschlossen.\n
-Weitere Anwendungen kannst du jederzeit über den COSMIC‑Shop installieren.\n
-Der Setup‑Assistent wird nicht erneut gestartet."
diff --git a/files/etc/skel/.config/firstboot/run b/files/etc/skel/.config/firstboot/run
deleted file mode 100644
index 8b13789..0000000
--- a/files/etc/skel/.config/firstboot/run
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/files/etc/skel/.config/firstboot/wait-and-run.sh b/files/etc/skel/.config/firstboot/wait-and-run.sh
deleted file mode 100644
index f3ecf7d..0000000
--- a/files/etc/skel/.config/firstboot/wait-and-run.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-# Warten, bis wir wirklich in einer grafischen Session sind
-until [ -n "${WAYLAND_DISPLAY:-}" ] || [ -n "${DISPLAY:-}" ]; do
- sleep 1
-done
-
-# User‑DBus stabil
-until busctl --user list >/dev/null 2>&1; do
- sleep 1
-done
-
-sleep 2
-exec "$HOME/.config/firstboot/firstboot-setup.sh"