From b12984a8d0388bb19f8eb3a75bf7bc25c0895956 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 24 Feb 2025 10:49:26 +0100 Subject: [PATCH] =?UTF-8?q?Feature:=20F=C3=BCgt=20diverese=20Config-=20und?= =?UTF-8?q?=20Installationsskripte=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Setup/10_Programs.sh | 104 +++++++++++++++++++++++++++++++++++++++++ Setup/4_ZshRegister.sh | 27 +++++++++++ Setup/5_DomainLogin.sh | 36 ++++++++++++++ Setup/6_Polish.sh | 76 ++++++++++++++++++++++++++++++ Setup/7_GrubTheme.sh | 36 ++++++++++++++ Setup/8_Plymouth.sh | 59 +++++++++++++++++++++++ Setup/9_GamingSetup.sh | 35 ++++++++++++++ 7 files changed, 373 insertions(+) create mode 100644 Setup/10_Programs.sh create mode 100644 Setup/4_ZshRegister.sh create mode 100644 Setup/5_DomainLogin.sh create mode 100644 Setup/6_Polish.sh create mode 100644 Setup/7_GrubTheme.sh create mode 100644 Setup/8_Plymouth.sh create mode 100644 Setup/9_GamingSetup.sh diff --git a/Setup/10_Programs.sh b/Setup/10_Programs.sh new file mode 100644 index 0000000..3e1181e --- /dev/null +++ b/Setup/10_Programs.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +set -e # Skript bricht bei Fehlern ab + +# Überprüfen, ob Flatpak installiert ist +if ! command -v flatpak &>/dev/null; then + echo "❌ Fehler: Flatpak ist nicht installiert. Bitte installiere es und versuche es erneut." + exit 1 +fi + +# Flatpak Apps installieren (nur falls noch nicht vorhanden) +declare -A FLATPAK_APPS=( + ["org.libreoffice.LibreOffice"]="LibreOffice" + ["dev.vencord.Vesktop"]="Vesktop" + ["org.mozilla.Thunderbird"]="Thunderbird" +) + +for APP in "${!FLATPAK_APPS[@]}"; do + if flatpak list | grep -q "$APP"; then + echo "✅ ${FLATPAK_APPS[$APP]} ist bereits installiert." + else + echo "🔄 Installiere ${FLATPAK_APPS[$APP]}..." + flatpak install -y flathub "$APP" + fi +done + +# Spotify-Installation +echo "🎵 Überprüfe Spotify-Installation..." +SPOTIFY_KEY="/etc/apt/trusted.gpg.d/spotify.gpg" +SPOTIFY_REPO="/etc/apt/sources.list.d/spotify.list" + +if dpkg -l | grep -q "spotify-client"; then + echo "✅ Spotify ist bereits installiert." +else + echo "🔄 Installiere Spotify..." + + if [[ ! -f "$SPOTIFY_KEY" ]]; then + curl -sS https://download.spotify.com/debian/pubkey_C85668DF69375001.gpg | sudo gpg --dearmor -o "$SPOTIFY_KEY" + else + echo "✅ Spotify GPG-Key ist bereits vorhanden." + fi + + if [[ ! -f "$SPOTIFY_REPO" ]]; then + echo "deb http://repository.spotify.com stable non-free" | sudo tee "$SPOTIFY_REPO" + else + echo "✅ Spotify-Repository ist bereits konfiguriert." + fi + + sudo apt update && sudo apt install -y spotify-client +fi + +# Tealdeer (tldr-Client) installieren +if ! command -v tldr &>/dev/null; then + echo "🔄 Installiere tealdeer..." + sudo apt install -y tealdeer +else + echo "✅ Tealdeer ist bereits installiert." +fi + +# tealdeer Autoupdate konfigurieren +TEALDEER_CONFIG=~/.config/tealdeer/config.toml +mkdir -p ~/.config/tealdeer +if ! grep -q "\[updates\]" "$TEALDEER_CONFIG" 2>/dev/null; then + echo -e "\n[updates]" >> "$TEALDEER_CONFIG" +fi +if grep -q "^auto_update" "$TEALDEER_CONFIG" 2>/dev/null; then + sed -i 's/^auto_update.*/auto_update = true/' "$TEALDEER_CONFIG" +else + echo "auto_update = true" >> "$TEALDEER_CONFIG" +fi + +# Wikiman installieren, falls nicht vorhanden +if ! command -v wikiman &>/dev/null; then + echo "🔄 Installiere Wikiman..." + + # Prüfen, ob `make` installiert ist + if ! command -v make &>/dev/null; then + echo "🔄 Installiere make..." + sudo apt install -y make + fi + + git clone 'https://github.com/filiparag/wikiman' ~/wikiman + cd ~/wikiman || exit + + # Die neueste stabile Version auschecken + git checkout "$(git describe --tags | cut -d'-' -f1)" + + # Kompilieren und installieren + make all + sudo make install + + # Cleanup + cd .. + rm -rf ~/wikiman + + echo "✅ Wikiman wurde erfolgreich installiert!" +else + echo "✅ Wikiman ist bereits installiert." +fi + +# Arch-Wiki für Wikiman installieren +wikiman --install archwiki + +echo "✅ Alle Programme wurden erfolgreich installiert!" diff --git a/Setup/4_ZshRegister.sh b/Setup/4_ZshRegister.sh new file mode 100644 index 0000000..6371c2a --- /dev/null +++ b/Setup/4_ZshRegister.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden." + exit 1 +fi + +# Benutzername ermitteln +USER_NAME=$(whoami) + +# Eintrag aus getent passwd +USER_ENTRY=$(getent passwd "$USER_NAME") + +# Backup der passwd Datei +cp /etc/passwd /etc/passwd.bak + +if grep -q "^$USER_NAME:" /etc/passwd; then + # Existierenden Eintrag aktualisieren + sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd + echo "Shell für $USER_NAME wurde auf zsh aktualisiert." +else + # Neuen Eintrag hinzufügen + UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') + echo "$UPDATED_ENTRY" >> /etc/passwd + echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." +fi diff --git a/Setup/5_DomainLogin.sh b/Setup/5_DomainLogin.sh new file mode 100644 index 0000000..c585bf9 --- /dev/null +++ b/Setup/5_DomainLogin.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden." + exit 1 +fi + +# SDDM-Konfigurationsdatei in sddm.conf.d erstellen +SDDM_CONF_DIR="/etc/sddm.conf.d" +SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/custom.conf" +mkdir -p "$SDDM_CONF_DIR" + +cat < "$SDDM_CUSTOM_CONF" +[Users] +MaximumUid=2000000 +HideShells=/sbin/nologin,/bin/false +EOF + +# SSSD-Konfiguration anpassen, falls die Datei existiert +SSSD_CONF="/etc/sssd/sssd.conf" +if [[ -f "$SSSD_CONF" ]]; then + if grep -q "^enumerate" "$SSSD_CONF"; then + sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" + else + echo "enumerate = false" >> "$SSSD_CONF" + fi + # Berechtigungen für SSSD-Konfigurationsdatei setzen + chmod 600 "$SSSD_CONF" +fi + +# SSSD und SDDM neu starten +systemctl restart sssd +systemctl restart sddm + +echo "SDDM wurde so konfiguriert, dass lokale und bereits angemeldete Domänenbenutzer angezeigt werden." diff --git a/Setup/6_Polish.sh b/Setup/6_Polish.sh new file mode 100644 index 0000000..f53ae50 --- /dev/null +++ b/Setup/6_Polish.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +set -e # Skript bricht bei Fehlern ab + +# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird +if [[ $EUID -eq 0 ]]; then + echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird." + exit 1 +fi + +echo "🔄 System wird aktualisiert..." +sudo apt update && sudo apt install -y flatpak neovim + +# Flatpak Flathub-Repo hinzufügen +sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + +# Firefox-Installation +echo "🌍 Firefox wird installiert..." +sudo install -d -m 0755 /etc/apt/keyrings +wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O /tmp/packages.mozilla.org.asc +gpg --dearmor < /tmp/packages.mozilla.org.asc | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null +rm /tmp/packages.mozilla.org.asc + +echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee /etc/apt/sources.list.d/mozilla.list > /dev/null +echo -e 'Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000' | sudo tee /etc/apt/preferences.d/mozilla > /dev/null + +sudo apt update && sudo apt install -y firefox + +# Hyprland User Bindings +HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" +mkdir -p "$HYPR_CONFIG_DIR" + +# Keybinds hinzufügen (falls nicht vorhanden) +declare -A KEYBINDS=( + ["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu" + ["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock" + ["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager" +) + +for BIND in "${!KEYBINDS[@]}"; do + if ! grep -Fxq "$BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then + echo "$BIND # ${KEYBINDS[$BIND]}" >> "$HYPR_CONFIG_DIR/UserKeybinds.conf" + echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" + else + echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" + fi +done + +# Standardvorlagen ablegen +echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." +TEMPLATES_DIR="$HOME/Vorlagen" +mkdir -p "$TEMPLATES_DIR" + +# Vorlagenliste +declare -A TEMPLATES=( + ["Textdokument.txt"]="Dies ist eine Standard-Textdatei." + ["Markdown-Dokument.md"]="# Markdown-Vorlage\n\nHier beginnt dein Markdown-Dokument." + ["Bash-Skript.sh"]="#!/bin/bash\n\necho 'Hello, world!'" + ["Python-Skript.py"]='#!/usr/bin/env python3\n\nprint("Hello, world!")' +) + +for FILE in "${!TEMPLATES[@]}"; do + TEMPLATE_PATH="$TEMPLATES_DIR/$FILE" + if [[ ! -f "$TEMPLATE_PATH" ]]; then + echo -e "${TEMPLATES[$FILE]}" > "$TEMPLATE_PATH" + chmod +x "$TEMPLATE_PATH" # Falls Skript + echo "✅ Vorlage erstellt: $FILE" + else + echo "ℹ️ Vorlage existiert bereits: $FILE" + fi +done + +# Non-Free und Contrib in separater sources.list hinzufügen +echo "deb http://deb.debian.org/debian/ $(lsb_release -sc) contrib non-free non-free-firmware" | sudo tee /etc/apt/sources.list.d/non-free.list > /dev/null + +echo "✅ Skript erfolgreich ausgeführt!" diff --git a/Setup/7_GrubTheme.sh b/Setup/7_GrubTheme.sh new file mode 100644 index 0000000..8c0ce23 --- /dev/null +++ b/Setup/7_GrubTheme.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -e # Skript bricht bei Fehlern ab + +# Theme-Name +THEME_NAME="vimix" + +# Prüfen, ob GRUB bereits das Theme verwendet +if grep -q "GRUB_THEME=" /etc/default/grub && grep -q "$THEME_NAME" /etc/default/grub; then + echo "✅ Das Theme '$THEME_NAME' ist bereits installiert und aktiv." + exit 0 +fi + +echo "🔄 Installiere das GRUB-Theme '$THEME_NAME'..." + +# Falls der Ordner existiert, vorher löschen +THEME_DIR="$HOME/grub-themes" +if [[ -d "$THEME_DIR" ]]; then + rm -rf "$THEME_DIR" +fi + +# Repository klonen +git clone https://github.com/vinceliuice/grub2-themes.git "$THEME_DIR" +cd "$THEME_DIR" + +# Theme installieren +sudo ./install.sh -b -t "$THEME_NAME" + +# GRUB-Konfiguration aktualisieren +echo "🔄 Aktualisiere die GRUB-Konfiguration..." +sudo update-grub + +# Aufräumen +rm -rf "$THEME_DIR" + +echo "✅ GRUB-Theme '$THEME_NAME' erfolgreich installiert und aktiviert!" diff --git a/Setup/8_Plymouth.sh b/Setup/8_Plymouth.sh new file mode 100644 index 0000000..bd86a94 --- /dev/null +++ b/Setup/8_Plymouth.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -e # Skript bricht bei Fehlern ab + +# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden." + exit 1 +fi + +echo "🔄 Plymouth und benötigte Pakete installieren..." +if ! dpkg -l | grep -qw plymouth; then + apt update && apt install -y plymouth plymouth-themes +else + echo "✅ Plymouth ist bereits installiert." +fi + +# Plymouth in initramfs aktivieren +MKINIT_CONF="/etc/mkinitcpio.conf" +if [[ -f "$MKINIT_CONF" ]]; then + if grep -q "^HOOKS=" "$MKINIT_CONF"; then + sed -i 's/^HOOKS=.*/HOOKS=(base udev plymouth autodetect modconf block encrypt lvm2 filesystems keyboard fsck)/' "$MKINIT_CONF" + else + echo 'HOOKS=(base udev plymouth autodetect modconf block encrypt lvm2 filesystems keyboard fsck)' >> "$MKINIT_CONF" + fi +fi + +# Falls Dracut genutzt wird, initramfs neu erstellen +if command -v dracut &>/dev/null; then + echo "🔄 Dracut erkannt, erstelle neues initramfs..." + dracut -f +else + echo "🔄 Initramfs wird aktualisiert..." + update-initramfs -u +fi + +# Plymouth-Theme setzen +PLYMOUTH_THEME="spinner" +echo "🎨 Setze Plymouth-Theme auf '$PLYMOUTH_THEME'..." +plymouth-set-default-theme -R "$PLYMOUTH_THEME" + +# Kernel-Boot-Parameter in GRUB anpassen +GRUB_CFG="/etc/default/grub" +GRUB_BACKUP="/etc/default/grub.bak" + +echo "🔍 Überprüfe GRUB-Einstellungen..." +NEW_CMDLINE='quiet splash vt.global_cursor_default=0 loglevel=3 rd.luks.options=discard plymouth.ignore-serial-consoles' + +if grep -q "^GRUB_CMDLINE_LINUX_DEFAULT=.*$NEW_CMDLINE.*" "$GRUB_CFG"; then + echo "✅ GRUB-Konfiguration bereits aktuell." +else + echo "🔄 Aktualisiere GRUB-Parameter..." + cp "$GRUB_CFG" "$GRUB_BACKUP" + sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="'$NEW_CMDLINE'"/' "$GRUB_CFG" + echo "🔄 GRUB wird aktualisiert..." + update-grub +fi + +echo "✅ Einrichtung abgeschlossen. Bitte starte das System neu, um die Änderungen zu übernehmen." diff --git a/Setup/9_GamingSetup.sh b/Setup/9_GamingSetup.sh new file mode 100644 index 0000000..130ef26 --- /dev/null +++ b/Setup/9_GamingSetup.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden." + exit 1 +fi + +# System aktualisieren +apt update && apt upgrade -y + +# Steam-Installation +dpkg --add-architecture i386 +apt update +apt install -y wget curl + +wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb +dpkg -i /tmp/steam.deb || apt-get install -f -y +rm /tmp/steam.deb + +# Lutris-Installation +LUTRIS_KEYRING="/etc/apt/keyrings/lutris.gpg" +LUTRIS_REPO="https://download.opensuse.org/repositories/home:/strycore/Debian_12/" + +mkdir -p /etc/apt/keyrings +wget -qO /tmp/lutris-key.gpg "${LUTRIS_REPO}Release.key" +gpg --dearmor < /tmp/lutris-key.gpg > "$LUTRIS_KEYRING" +rm /tmp/lutris-key.gpg + +echo "deb [signed-by=$LUTRIS_KEYRING] $LUTRIS_REPO ./" > /etc/apt/sources.list.d/lutris.list + +apt update +apt install -y lutris + +echo "✅ Installation von Steam und Lutris abgeschlossen!"