Compare commits
5 Commits
arch
...
debian_12_
| Author | SHA1 | Date | |
|---|---|---|---|
| 407201d0e2 | |||
| a95ce7ab2e | |||
| ad8298995f | |||
| 07d9282587 | |||
| 938e1bc70d |
209
0_Setup.sh
209
0_Setup.sh
@@ -6,141 +6,106 @@ if [ "$(id -u)" -ne 0 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# System aktualisieren und benötigte Pakete installieren
|
apt update && apt upgrade -y
|
||||||
pacman -Syu --noconfirm git sudo p7zip unrar unzip networkmanager tree bluez bluez-utils wget curl less ineturils
|
|
||||||
|
|
||||||
# Aktivieren und Starten von NetworkManager und Bluetooth-Diensten
|
# sources-list Config
|
||||||
systemctl enable --now NetworkManager
|
read -p "❓ Soll die apt sources-list so konfiguriert werden, dass sie Contributions und non-free Software zum installieren ermöglicht? (j/n) [n]: " answer
|
||||||
systemctl enable --now bluetooth
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
# yay Installation
|
|
||||||
read -p "❓ Soll der Paketmanager Yay für AUR-Pakete installiert werden? (j/n) [n]: " answer
|
|
||||||
answer=${answer,,}
|
|
||||||
answer=${answer:-n}
|
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
# Tatsächlichen Benutzer ermitteln (nicht root)
|
# Datei-Pfad zur sources.list
|
||||||
if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then
|
SOURCE_LIST="/etc/apt/sources.list"
|
||||||
echo "❌ Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
CURRENT_DIR=$(pwd)
|
# Backup erstellen
|
||||||
USER_NAME="$SUDO_USER"
|
cp "$SOURCE_LIST" "$SOURCE_LIST.bak"
|
||||||
AUR_CODE_DIR="/var/lib/user_aur_code"
|
|
||||||
|
|
||||||
# Sicherstellen, dass benötigte Pakete installiert sind
|
echo "ℹ️ Aktualisiere $SOURCE_LIST..."
|
||||||
pacman -Syu --noconfirm glib2 git base-devel --needed
|
|
||||||
|
|
||||||
# AUR-Verzeichnis erstellen
|
# Temporäre Datei erstellen
|
||||||
mkdir -p $AUR_CODE_DIR
|
TEMP_FILE=$(mktemp)
|
||||||
sudo chmod -R 777 $AUR_CODE_DIR
|
|
||||||
|
|
||||||
# Installiere yay
|
# Fehlende Komponenten, die hinzugefügt werden sollen
|
||||||
cd $AUR_CODE_DIR
|
REQUIRED_COMPONENTS=("main" "non-free" "non-free-firmware" "contrib")
|
||||||
sudo -u $USER_NAME git clone https://aur.archlinux.org/yay.git
|
|
||||||
cd yay
|
|
||||||
sudo -u $USER_NAME makepkg -sic --noconfirm || { echo "❌ Fehler beim Erstellen von Yay"; exit 1; }
|
|
||||||
sudo -u $USER_NAME git clean -dfx
|
|
||||||
|
|
||||||
cd $CURRENT_DIR
|
while IFS= read -r line; do
|
||||||
fi
|
# Falls die Zeile auskommentiert oder leer ist, unverändert übernehmen
|
||||||
|
if [[ "$line" =~ ^# || -z "$line" ]]; then
|
||||||
# multilib Repo
|
echo "$line" >>"$TEMP_FILE"
|
||||||
read -p "❓ Soll das multilib-Repository aktiviert werden? (j/n) [n]: " answer
|
continue
|
||||||
answer=${answer,,}
|
|
||||||
answer=${answer:-n}
|
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
|
||||||
# Multilib-Repository aktivieren
|
|
||||||
echo "🔄 Aktiviere Multilib-Repository..."
|
|
||||||
# Zeilen einkommentieren, falls sie auskommentiert sind
|
|
||||||
if grep -q "^\[multilib\]" /etc/pacman.conf && grep -q "#Include = /etc/pacman.d/mirrorlist" /etc/pacman.conf; then
|
|
||||||
sudo sed -i 's/#\[multilib\]/\[multilib\]/g' /etc/pacman.conf
|
|
||||||
sudo sed -i 's/#Include = \/etc\/pacman.d\/mirrorlist/Include = \/etc\/pacman.d\/mirrorlist/g' /etc/pacman.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Falls der Block nicht vorhanden ist, füge ihn hinzu
|
|
||||||
if ! grep -q "^\[multilib\]" /etc/pacman.conf; then
|
|
||||||
echo "[multilib]" | sudo tee -a /etc/pacman.conf
|
|
||||||
echo "Include = /etc/pacman.d/mirrorlist" | sudo tee -a /etc/pacman.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Paketdatenbank aktualisieren
|
|
||||||
echo "🔄 Aktualisiere die Paketdatenbank..."
|
|
||||||
pacman -Sy --noconfirm
|
|
||||||
fi
|
|
||||||
|
|
||||||
# systemd-boot Config
|
|
||||||
read -p "❓ Soll systemd-boot so angepasst werden, dass es nur im Fehlerfall angezeigt wird? (j/n) [n]: " answer
|
|
||||||
answer=${answer,,}
|
|
||||||
answer=${answer:-n}
|
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
|
||||||
LOADER_CONF="/boot/loader/loader.conf"
|
|
||||||
|
|
||||||
# Überprüfen, ob die Datei exists
|
|
||||||
if [[ ! -f "$LOADER_CONF" ]]; then
|
|
||||||
echo "❌ Datei $LOADER_CONF nicht gefunden!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Überprüfen, ob die "timeout"-Option bereits auf 0 gesetzt ist
|
|
||||||
if grep -q "^timeout 0" "$LOADER_CONF"; then
|
|
||||||
echo "ℹ️ 'timeout 0' ist bereits gesetzt."
|
|
||||||
else
|
|
||||||
# Timeout auf 0 setzen
|
|
||||||
echo "🔄 Setze 'timeout 0' in der loader.conf..."
|
|
||||||
# Falls bereits eine timeout-Zeile existiert, diese ersetzen
|
|
||||||
sed -i 's/^timeout .*/timeout 0/' "$LOADER_CONF"
|
|
||||||
# Falls keine timeout-Zeile existiert, diese hinzufügen
|
|
||||||
if ! grep -q "^timeout" "$LOADER_CONF"; then
|
|
||||||
echo "timeout 0" >>"$LOADER_CONF"
|
|
||||||
fi
|
fi
|
||||||
echo "✅ 'timeout 0' wurde erfolgreich gesetzt."
|
|
||||||
fi
|
# Die ersten drei Felder als APT-Befehl, URL und Distribution speichern
|
||||||
|
APT_CMD=$(echo "$line" | awk '{print $1}')
|
||||||
|
APT_URL=$(echo "$line" | awk '{print $2}')
|
||||||
|
APT_DIST=$(echo "$line" | awk '{print $3}')
|
||||||
|
|
||||||
|
# Alle vorhandenen Komponenten sammeln (ab Feld 4)
|
||||||
|
CURRENT_COMPONENTS=$(echo "$line" | cut -d' ' -f4-)
|
||||||
|
|
||||||
|
# Set für aktuelle Komponenten erstellen
|
||||||
|
COMPONENTS_SET=($CURRENT_COMPONENTS)
|
||||||
|
|
||||||
|
# Fehlende Komponenten hinzufügen
|
||||||
|
for component in "${REQUIRED_COMPONENTS[@]}"; do
|
||||||
|
if ! [[ " ${COMPONENTS_SET[*]} " =~ " $component " ]]; then
|
||||||
|
COMPONENTS_SET+=("$component")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Neue Zeile mit ursprünglichem APT-Befehl, URL, Distribution und aktualisierten Komponenten schreiben
|
||||||
|
echo "$APT_CMD $APT_URL $APT_DIST ${COMPONENTS_SET[*]}" >>"$TEMP_FILE"
|
||||||
|
|
||||||
|
done <"$SOURCE_LIST"
|
||||||
|
|
||||||
|
# Originaldatei ersetzen
|
||||||
|
mv "$TEMP_FILE" "$SOURCE_LIST"
|
||||||
|
|
||||||
|
# apt aktualisieren
|
||||||
|
echo "🔄 Aktualisiere APT..."
|
||||||
|
apt update
|
||||||
|
|
||||||
|
echo "✅ Fertig! $SOURCE_LIST wurde aktualisiert."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Gruppe "sudo" und Sudoers-Regel hinzufügen
|
apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl
|
||||||
read -p "❓ Soll die Gruppe 'sudo' erstellt und ihr Sudo-Zugriff gewährt werden? (j/n) [n]: " answer
|
|
||||||
answer=${answer,,}
|
# GRUB-Config
|
||||||
answer=${answer:-n}
|
read -p "❓ Soll GRUB so konfiguriert werden, dass es nur im Fehlerfall angezeigt wird? (j/n) [n]: " answer
|
||||||
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
# Gruppe "sudo" erstellen, falls sie nicht existiert
|
echo "ℹ️ GRUB wird so konfiguriert, dass es nur im Fehlerfall angezeigt wird..."
|
||||||
if ! grep -q "^sudo:" /etc/group; then
|
|
||||||
groupadd sudo
|
|
||||||
echo "ℹ️ Gruppe 'sudo' wurde erstellt."
|
|
||||||
else
|
|
||||||
echo "ℹ️ Gruppe 'sudo' existiert bereits."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Sudoers-Regel für die Gruppe "sudo" erstellen
|
# Sicherstellen, dass die Datei existiert
|
||||||
SUDOERS_FILE="/etc/sudoers.d/00-sudo-group"
|
GRUB_CFG="/etc/default/grub"
|
||||||
if [ ! -f "$SUDOERS_FILE" ]; then
|
|
||||||
echo "%sudo ALL=(ALL:ALL) ALL" >"$SUDOERS_FILE"
|
|
||||||
chmod 440 "$SUDOERS_FILE"
|
|
||||||
echo "ℹ️ Sudo-Regel für die Gruppe 'sudo' wurde erstellt."
|
|
||||||
else
|
|
||||||
echo "ℹ️ Sudo-Regel für die Gruppe 'sudo' existiert bereits."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Abfrage, ob ein Benutzer der Gruppe hinzugefügt werden soll
|
if [[ ! -f "$GRUB_CFG" ]]; then
|
||||||
read -p "❓ Welcher Benutzer soll zur Gruppe 'sudo' hinzugefügt werden? (Leer lassen für keinen): " username
|
echo "❌ Fehler: $GRUB_CFG nicht gefunden!"
|
||||||
if [[ -n "$username" ]]; then
|
else
|
||||||
if id "$username" &>/dev/null; then
|
# Backup der aktuellen GRUB-Konfiguration
|
||||||
usermod -aG sudo "$username"
|
cp "$GRUB_CFG" "$GRUB_CFG.bak"
|
||||||
echo "ℹ️ Benutzer '$username' wurde zur Gruppe 'sudo' hinzugefügt."
|
|
||||||
else
|
# Konfigurationsänderungen vornehmen
|
||||||
echo "❌ Benutzer '$username' existiert nicht!"
|
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' "$GRUB_CFG"
|
||||||
fi
|
sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' "$GRUB_CFG"
|
||||||
|
|
||||||
|
# Falls die Einträge nicht existieren, hinzufügen
|
||||||
|
grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT=0' >>"$GRUB_CFG"
|
||||||
|
grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT_STYLE=hidden' >>"$GRUB_CFG"
|
||||||
|
|
||||||
|
# GRUB-Konfiguration aktualisieren
|
||||||
|
update-grub
|
||||||
|
|
||||||
|
echo "✅ GRUB wurde erfolgreich angepasst. Änderungen werden beim nächsten Boot wirksam."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# sbin in PATH aufnehmen
|
# sbin in Path
|
||||||
read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
|
read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
|
||||||
answer=${answer,,}
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n}
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
cat << 'EOF' >/etc/profile.d/sbin_in_path.sh
|
cat << 'EOF' >/etc/profile.d/sbin_in_path.sh
|
||||||
@@ -161,13 +126,13 @@ fi
|
|||||||
|
|
||||||
# sudo-Hinweis
|
# sudo-Hinweis
|
||||||
read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer
|
read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer
|
||||||
answer=${answer,,}
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n}
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
cat << 'EOF' >/etc/profile.d/sudo_hint.sh
|
cat << 'EOF' >/etc/profile.d/sudo_hint.sh
|
||||||
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
|
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
|
||||||
case " $(groups) " in *\ sudo\ *)
|
case " $(groups) " in *\ admin\ *|*\ sudo\ *)
|
||||||
if [ -x /usr/bin/sudo ]; then
|
if [ -x /usr/bin/sudo ]; then
|
||||||
echo 'To run a command as administrator (user "root"), use "sudo <command>".'
|
echo 'To run a command as administrator (user "root"), use "sudo <command>".'
|
||||||
echo 'See "man sudo_root" for details.'
|
echo 'See "man sudo_root" for details.'
|
||||||
@@ -179,10 +144,10 @@ EOF
|
|||||||
echo "ℹ️ sudo-Hinweis wurde hinzugefügt!"
|
echo "ℹ️ sudo-Hinweis wurde hinzugefügt!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# XDG-Data-Dirs setzen
|
# sudo-Hinweis
|
||||||
read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer
|
read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer
|
||||||
answer=${answer,,}
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n}
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
cat << 'EOF' >/etc/profile.d/xdg_dirs_desktop_session.sh
|
cat << 'EOF' >/etc/profile.d/xdg_dirs_desktop_session.sh
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ declare -A FLATPAK_APPS=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
for APP in "${!FLATPAK_APPS[@]}"; do
|
for APP in "${!FLATPAK_APPS[@]}"; do
|
||||||
if pacman -Qs "${FLATPAK_APPS[$APP]}" &>/dev/null; then
|
if dpkg -l | grep -iq "${FLATPAK_APPS[$APP]}"; then
|
||||||
echo "✅ ${FLATPAK_APPS[$APP]} ist bereits als Paket installiert."
|
echo "✅ ${FLATPAK_APPS[$APP]} ist bereits als DEB-Paket installiert."
|
||||||
elif flatpak list | grep -q "$APP"; then
|
elif flatpak list | grep -q "$APP"; then
|
||||||
echo "✅ ${FLATPAK_APPS[$APP]} ist bereits als Flatpak installiert."
|
echo "✅ ${FLATPAK_APPS[$APP]} ist bereits als Flatpak installiert."
|
||||||
else
|
else
|
||||||
@@ -42,7 +42,7 @@ if flatpak list | grep -q "org.libreoffice.LibreOffice"; then
|
|||||||
elif command -v libreoffice &>/dev/null; then
|
elif command -v libreoffice &>/dev/null; then
|
||||||
LO_CMD="libreoffice"
|
LO_CMD="libreoffice"
|
||||||
else
|
else
|
||||||
echo "❌ Fehler: LibreOffice ist weder als Flatpak noch als Paket installiert."
|
echo "❌ Fehler: LibreOffice ist weder als Flatpak noch als DEB-Paket installiert."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -63,13 +63,27 @@ fi
|
|||||||
|
|
||||||
# Spotify-Installation
|
# Spotify-Installation
|
||||||
echo "🎵 Überprüfe 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 pacman -Qs spotify &>/dev/null; then
|
if dpkg -l | grep -q "spotify-client"; then
|
||||||
echo "✅ Spotify ist bereits installiert."
|
echo "✅ Spotify ist bereits installiert."
|
||||||
else
|
else
|
||||||
echo "🔄 Installiere Spotify..."
|
echo "🔄 Installiere Spotify..."
|
||||||
|
|
||||||
sudo pacman -S --noconfirm 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
|
fi
|
||||||
|
|
||||||
# Spotify .desktop-Datei erstellen
|
# Spotify .desktop-Datei erstellen
|
||||||
@@ -96,7 +110,7 @@ dependencies=(man fzf ripgrep awk w3m coreutils parallel)
|
|||||||
for dep in "${dependencies[@]}"; do
|
for dep in "${dependencies[@]}"; do
|
||||||
if ! command -v "$dep" &>/dev/null; then
|
if ! command -v "$dep" &>/dev/null; then
|
||||||
echo "🔄 Installiere $dep..."
|
echo "🔄 Installiere $dep..."
|
||||||
sudo pacman -S --noconfirm "$dep"
|
sudo apt install -y "$dep"
|
||||||
else
|
else
|
||||||
echo "✅ $dep ist bereits installiert."
|
echo "✅ $dep ist bereits installiert."
|
||||||
fi
|
fi
|
||||||
@@ -106,7 +120,7 @@ done
|
|||||||
# Tealdeer (tldr-Client) installieren
|
# Tealdeer (tldr-Client) installieren
|
||||||
if ! command -v tldr &>/dev/null; then
|
if ! command -v tldr &>/dev/null; then
|
||||||
echo "🔄 Installiere tealdeer..."
|
echo "🔄 Installiere tealdeer..."
|
||||||
sudo pacman -S --noconfirm tealdeer
|
sudo apt install -y tealdeer
|
||||||
else
|
else
|
||||||
echo "✅ Tealdeer ist bereits installiert."
|
echo "✅ Tealdeer ist bereits installiert."
|
||||||
fi
|
fi
|
||||||
@@ -130,7 +144,7 @@ if ! command -v wikiman &>/dev/null; then
|
|||||||
# Prüfen, ob `make` installiert ist
|
# Prüfen, ob `make` installiert ist
|
||||||
if ! command -v make &>/dev/null; then
|
if ! command -v make &>/dev/null; then
|
||||||
echo "🔄 Installiere make..."
|
echo "🔄 Installiere make..."
|
||||||
sudo pacman -S --noconfirm make
|
sudo apt install -y make
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git clone 'https://github.com/filiparag/wikiman' ~/wikiman
|
git clone 'https://github.com/filiparag/wikiman' ~/wikiman
|
||||||
@@ -171,7 +185,7 @@ xdg-mime default org.gnome.Loupe.desktop image/jpeg
|
|||||||
xdg-mime default org.gnome.Loupe.desktop image/png
|
xdg-mime default org.gnome.Loupe.desktop image/png
|
||||||
|
|
||||||
# Disk-Utility, PDF-Viewer (Okular), Softwarecenter und Flatpak-Plugin, Systemmonitor
|
# Disk-Utility, PDF-Viewer (Okular), Softwarecenter und Flatpak-Plugin, Systemmonitor
|
||||||
sudo pacman -S --noconfirm gnome-disk-utility okular gnome-software gnome-system-monitor
|
sudo apt -y install gnome-disk-utility okular gnome-software gnome-software-plugin-flatpak gnome-system-monitor
|
||||||
# Okular als Standard-PDF-Viewer setzen
|
# Okular als Standard-PDF-Viewer setzen
|
||||||
xdg-mime default okularApplication_pdf.desktop application/pdf
|
xdg-mime default okularApplication_pdf.desktop application/pdf
|
||||||
# Betterbird als Standard-Mail-Programm setzen
|
# Betterbird als Standard-Mail-Programm setzen
|
||||||
@@ -231,31 +245,23 @@ read -p "❓ Soll VeraCrypt installiert werden? (j/n) [n]: " answer
|
|||||||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
|
||||||
echo "🔄 Installiere VeraCrypt..."
|
echo "🔄 Installiere VeraCrypt..."
|
||||||
|
echo 'deb http://download.opensuse.org/repositories/home:/unit193:/veracrypt/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:unit193:veracrypt.list
|
||||||
# VeraCrypt aus den Arch-Repositories installieren
|
curl -fsSL https://download.opensuse.org/repositories/home:unit193:veracrypt/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_unit193_veracrypt.gpg > /dev/null
|
||||||
if ! command -v veracrypt &>/dev/null; then
|
sudo apt update
|
||||||
sudo pacman -S --noconfirm veracrypt
|
sudo apt install veracrypt
|
||||||
else
|
|
||||||
echo "✅ VeraCrypt ist bereits installiert."
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Webmin installieren
|
# Webmin installieren
|
||||||
read -p "❓ Soll Webmin installiert werden? (j/n) [n]: " answer
|
read -p "❓ Soll webmin installiert werden? (j/n) [n]: " answer
|
||||||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
|
||||||
echo "🔄 Installiere Webmin..."
|
curl -o /tmp/webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
|
||||||
|
sudo sh /tmp/webmin-setup-repo.sh
|
||||||
# Webmin aus dem AUR installieren (falls yay vorhanden ist)
|
sudo apt install webmin -y
|
||||||
if command -v yay &>/dev/null; then
|
|
||||||
yay -S --noconfirm webmin
|
|
||||||
else
|
|
||||||
echo "❌ Bitte installiere yay oder einen anderen AUR-Helper, um Webmin zu installieren."
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Waydroid installieren
|
# Waydroid installieren
|
||||||
@@ -263,31 +269,17 @@ read -p "❓ Soll Waydroid installiert werden? (j/n) [n]: " answer
|
|||||||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
|
||||||
echo "🔄 Installiere Waydroid über AUR..."
|
sudo apt install curl ca-certificates -y
|
||||||
|
curl -s https://repo.waydro.id | sudo bash
|
||||||
|
sudo apt install waydroid -y
|
||||||
|
|
||||||
# Überprüfen, ob yay installiert ist
|
sudo ufw allow 53
|
||||||
if ! command -v yay &>/dev/null; then
|
sudo ufw allow 67
|
||||||
echo "❌ Yay ist nicht installiert. Bitte installiere yay und versuche es erneut."
|
sudo ufw default allow FORWARD
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Waydroid über AUR installieren
|
|
||||||
yay -S --noconfirm waydroid
|
|
||||||
|
|
||||||
# UFW konfigurieren (falls installiert)
|
|
||||||
if command -v ufw &>/dev/null; then
|
|
||||||
sudo ufw allow 53
|
|
||||||
sudo ufw allow 67
|
|
||||||
sudo ufw default allow FORWARD
|
|
||||||
else
|
|
||||||
echo "❌ UFW ist nicht installiert. Bitte installiere es manuell, falls benötigt."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Waydroid-Container aktivieren
|
|
||||||
sudo systemctl enable --now waydroid-container
|
sudo systemctl enable --now waydroid-container
|
||||||
|
|
||||||
# Skript zum Verstecken der Waydroid-Apps erstellen
|
|
||||||
sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null
|
sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null
|
||||||
for app in ~/.local/share/applications/waydroid.*.desktop; do
|
for app in ~/.local/share/applications/waydroid.*.desktop; do
|
||||||
grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app
|
grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app
|
||||||
75
1_AdJoin.sh
75
1_AdJoin.sh
@@ -1,75 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Root-Rechte prüfen
|
|
||||||
if [ "$(id -u)" -eq 0 ]; then
|
|
||||||
echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
yay -Syu
|
|
||||||
|
|
||||||
# Installiere adcli mit yay
|
|
||||||
yay -S --noconfirm adcli || { echo "❌ Fehler beim Installieren von adcli"; exit 1; }
|
|
||||||
|
|
||||||
# Installiere realmd mit yay
|
|
||||||
yay -S --noconfirm realmd || { echo "❌ Fehler beim Installieren von realmd"; exit 1; }
|
|
||||||
|
|
||||||
# Samba-Verzeichnis erstellen
|
|
||||||
sudo mkdir -p /var/lib/samba/private/
|
|
||||||
|
|
||||||
# Installiere notwendige Pakete
|
|
||||||
sudo pacman -Syu --noconfirm sssd curl ntp polkit
|
|
||||||
|
|
||||||
echo "❓ Daten für Domainjoin:"
|
|
||||||
read -p "Domänenname: " DOMAIN
|
|
||||||
read -p "Adminuser: " ADMIN
|
|
||||||
|
|
||||||
# NetBIOS und COMS extrahieren
|
|
||||||
NetBios=$(echo "$DOMAIN" | cut -d '.' -f1)
|
|
||||||
coms=$(echo "$DOMAIN" | cut -d '.' -f2)
|
|
||||||
|
|
||||||
# Realm joinen
|
|
||||||
sudo realm join --verbose --user="$ADMIN" "$DOMAIN" --install=/ || { echo "❌ Fehler beim Domainjoin"; exit 1; }
|
|
||||||
|
|
||||||
# SSSD aktivieren und starten
|
|
||||||
sudo systemctl enable sssd
|
|
||||||
sudo systemctl start sssd
|
|
||||||
|
|
||||||
# PAM-Konfiguration überprüfen und anpassen
|
|
||||||
homedir=$(grep homedir /etc/pam.d/common-session | grep 0077 | cut -d '=' -f3 | head -1)
|
|
||||||
if [ "$homedir" = "0077" ]; then
|
|
||||||
echo "ℹ️ pam_mkhomedir.so konfiguriert"
|
|
||||||
sleep 1
|
|
||||||
else
|
|
||||||
echo "session required pam_mkhomedir.so skel=/etc/skel/ umask=0077" | sudo tee -a /etc/pam.d/common-session
|
|
||||||
fi
|
|
||||||
|
|
||||||
# SSSD-Konfigurationsdatei anpassen
|
|
||||||
sudo sed -i -e 's/fallback_homedir = \/home\/%u@%d/#fallback_homedir = \/home\/%u@%d/g' /etc/sssd/sssd.conf
|
|
||||||
sudo sed -i -e 's/use_fully_qualified_names = True/use_fully_qualified_names = False/g' /etc/sssd/sssd.conf
|
|
||||||
sudo sed -i -e 's/access_provider = ad/access_provider = simple/g' /etc/sssd/sssd.conf
|
|
||||||
sudo sed -i -e 's/sudoers: files sss/sudoers: files/g' /etc/nsswitch.conf
|
|
||||||
echo "override_homedir = /home/%u" | sudo tee -a /etc/sssd/sssd.conf
|
|
||||||
sudo grep -i override /etc/sssd/sssd.conf
|
|
||||||
|
|
||||||
# Weitere Anpassungen an der SSSD-Konfiguration
|
|
||||||
sudo sed -i '/krb5_realm =/a entry_cache_group_timeout = 5400' /etc/sssd/sssd.conf
|
|
||||||
sudo sed -i '/krb5_realm =/a entry_cache_user_timeout = 5400' /etc/sssd/sssd.conf
|
|
||||||
|
|
||||||
# Zusätzliche SSSD-Alternativen
|
|
||||||
sudo echo "#entry_cache_user_timeout = 5400
|
|
||||||
#entry_cache_group_timeout = 5400
|
|
||||||
#cache_credentials = TRUE
|
|
||||||
### Added to help with group mapping
|
|
||||||
###ldap_use_tokengroups = False
|
|
||||||
#ldap_schema = rfc2307bis
|
|
||||||
#ldap_schema = rfc2307
|
|
||||||
#ldap_schema = IPA
|
|
||||||
#ldap_schema = AD
|
|
||||||
#ldap_search_base = DC=$NetBios,DC=$coms
|
|
||||||
#ldap_group_member = uniquemember
|
|
||||||
#ad_enable_gc = False
|
|
||||||
entry_cache_timeout = 600
|
|
||||||
entry_cache_nowait_percentage = 75 " | sudo tee -a /etc/sssd/sssd.alternatives
|
|
||||||
|
|
||||||
echo "✅ Der Computer muss jetzt neugestartet werden. Vor dem Anmelden etwa 3 Minuten warten!"
|
|
||||||
40
1_TrixieUpgrade.sh
Executable file
40
1_TrixieUpgrade.sh
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Root-Rechte prüfen
|
||||||
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
|
echo "❌ Bitte als root ausführen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Sicherheitsabfrage
|
||||||
|
read -p "⚠️ Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (j/n) [n]: " answer
|
||||||
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
|
if [[ "$answer" != "j" ]] && [[ "$answer" != "y" ]]; then
|
||||||
|
echo "❌ Upgrade abgebrochen."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ℹ️ Aktualisiere Paketlisten..."
|
||||||
|
sudo apt-get update
|
||||||
|
|
||||||
|
echo "ℹ️ Starte System-Upgrade..."
|
||||||
|
sudo apt-get full-upgrade -y
|
||||||
|
|
||||||
|
echo "ℹ️ Ändere die Paketquellen auf Debian Trixie..."
|
||||||
|
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
|
||||||
|
sudo find /etc/apt/sources.list.d -type f -exec sed -i 's/bookworm/trixie/g' {} \;
|
||||||
|
|
||||||
|
echo "ℹ️ Aktualisiere Paketlisten erneut..."
|
||||||
|
sudo apt-get update
|
||||||
|
|
||||||
|
echo "ℹ️ Starte vollständiges Release-Upgrade..."
|
||||||
|
sudo apt-get full-upgrade -y
|
||||||
|
|
||||||
|
|
||||||
|
read -p "❓ Drücke [ENTER], um das System jetzt neuzustarten."
|
||||||
|
|
||||||
|
echo "ℹ️ System wird jetzt neu gestartet..."
|
||||||
|
sudo reboot
|
||||||
|
|
||||||
31
2_AdJoin.sh
Executable file
31
2_AdJoin.sh
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Root-Rechte prüfen
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
|
echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verzeichnis setzen
|
||||||
|
REPO_DIR="/tmp/Linux-Active-Directory-join-script"
|
||||||
|
|
||||||
|
# Repository klonen, falls es noch nicht existiert
|
||||||
|
if [ -d "$REPO_DIR" ]; then
|
||||||
|
echo "ℹ️ Repository existiert bereits. Überspringe das Klonen."
|
||||||
|
else
|
||||||
|
echo "ℹ️ Klonen des Repositories..."
|
||||||
|
git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In das Verzeichnis wechseln
|
||||||
|
cd "$REPO_DIR" || { echo "❌ Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; }
|
||||||
|
|
||||||
|
# AD-Skript ausführen
|
||||||
|
if [ -f "ADconnection.sh" ]; then
|
||||||
|
chmod +x ADconnection.sh
|
||||||
|
echo "ℹ️ Starte Active Directory setup..."
|
||||||
|
./ADconnection.sh
|
||||||
|
else
|
||||||
|
echo "❌ Fehler: ADconnection.sh nicht gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Root-Rechte prüfen
|
|
||||||
if [ "$(id -u)" -eq 0 ]; then
|
|
||||||
echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo pacman -Syu
|
|
||||||
yay -Syu
|
|
||||||
|
|
||||||
# Temporären Ordner erstellen
|
|
||||||
TEMP_DIR=$(mktemp -d)
|
|
||||||
|
|
||||||
# Skript in den temporären Ordner herunterladen
|
|
||||||
curl -L https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/auto-install.sh -o "$TEMP_DIR/auto-install.sh"
|
|
||||||
|
|
||||||
# Das heruntergeladene Skript mit sh ausführen
|
|
||||||
sh "$TEMP_DIR/auto-install.sh"
|
|
||||||
|
|
||||||
# Temporären Ordner löschen
|
|
||||||
rm -rf "$TEMP_DIR"
|
|
||||||
31
3_HyprlandInstall.sh
Executable file
31
3_HyprlandInstall.sh
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Root-Rechte prüfen
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
|
echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Repository-Pfad definieren
|
||||||
|
REPO_DIR="/tmp/Debian-Hyprland"
|
||||||
|
|
||||||
|
# Falls das Repository bereits existiert, überspringen
|
||||||
|
if [ -d "$REPO_DIR" ]; then
|
||||||
|
echo "ℹ️ Repository existiert bereits. Überspringe das klonen..."
|
||||||
|
else
|
||||||
|
echo "ℹ️ Klonen des Repositories..."
|
||||||
|
git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" || { echo "Fehler beim Klonen!"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In das Verzeichnis wechseln
|
||||||
|
cd "$REPO_DIR" || { echo "❌ Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; }
|
||||||
|
|
||||||
|
# Sicherstellen, dass das Installationsskript existiert und ausführbar ist
|
||||||
|
if [ -f "install.sh" ]; then
|
||||||
|
chmod +x install.sh
|
||||||
|
echo "ℹ️ Starte Installation..."
|
||||||
|
./install.sh
|
||||||
|
else
|
||||||
|
echo "❌ Fehler: install.sh nicht gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -15,17 +15,11 @@ fi
|
|||||||
USER_NAME="$SUDO_USER"
|
USER_NAME="$SUDO_USER"
|
||||||
USER_HOME=$(eval echo ~$USER_NAME)
|
USER_HOME=$(eval echo ~$USER_NAME)
|
||||||
|
|
||||||
read -p "❓ Soll die Shell für $USER_NAME auf ZSH gesetzt werden? (j/n) [n]: " answer
|
read -p "❓ Soll die shell für $USER_NAME auf ZSH gesetzt werden? (j/n) [n]: " answer
|
||||||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
# ZSH-Installation prüfen und ggf. installieren
|
|
||||||
if ! command -v zsh &> /dev/null; then
|
|
||||||
echo "ℹ️ ZSH wird installiert..."
|
|
||||||
sudo pacman -S --noconfirm zsh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Eintrag aus getent passwd holen
|
# Eintrag aus getent passwd holen
|
||||||
USER_ENTRY=$(getent passwd "$USER_NAME")
|
USER_ENTRY=$(getent passwd "$USER_NAME")
|
||||||
|
|
||||||
@@ -45,7 +39,7 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
|||||||
|
|
||||||
# Repository klonen
|
# Repository klonen
|
||||||
REPO_DIR="$USER_HOME/Debian-Hyprland"
|
REPO_DIR="$USER_HOME/Debian-Hyprland"
|
||||||
sudo -u "$USER_NAME" git clone https://github.com/JaKooLit/Arch-Hyprland.git "$REPO_DIR"
|
sudo -u "$USER_NAME" git clone https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR"
|
||||||
|
|
||||||
# Ordner nach ~/.oh-my-zsh/themes kopieren
|
# Ordner nach ~/.oh-my-zsh/themes kopieren
|
||||||
THEME_SRC="$REPO_DIR/assets/add_zsh_theme"
|
THEME_SRC="$REPO_DIR/assets/add_zsh_theme"
|
||||||
@@ -16,14 +16,6 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
|||||||
SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf"
|
SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf"
|
||||||
mkdir -p "$SDDM_CONF_DIR"
|
mkdir -p "$SDDM_CONF_DIR"
|
||||||
|
|
||||||
# SDDM-Konfigurationsdatei sichern
|
|
||||||
if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
|
|
||||||
cp "$SDDM_CUSTOM_CONF" "$SDDM_CUSTOM_CONF.bak"
|
|
||||||
echo "ℹ️ SDDM-Konfigurationsdatei gesichert als $SDDM_CUSTOM_CONF.bak"
|
|
||||||
else
|
|
||||||
echo "⚠️ SDDM-Konfigurationsdatei nicht gefunden, keine Sicherung vorgenommen."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Bestehende Konfiguration sichern und anpassen
|
# Bestehende Konfiguration sichern und anpassen
|
||||||
if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
|
if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
|
||||||
sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF"
|
sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF"
|
||||||
@@ -43,15 +35,6 @@ EOF
|
|||||||
|
|
||||||
# SSSD-Konfiguration anpassen, falls die Datei existiert
|
# SSSD-Konfiguration anpassen, falls die Datei existiert
|
||||||
SSSD_CONF="/etc/sssd/sssd.conf"
|
SSSD_CONF="/etc/sssd/sssd.conf"
|
||||||
|
|
||||||
# SSSD-Konfigurationsdatei sichern
|
|
||||||
if [[ -f "$SSSD_CONF" ]]; then
|
|
||||||
cp "$SSSD_CONF" "$SSSD_CONF.bak"
|
|
||||||
echo "ℹ️ SSSD-Konfigurationsdatei gesichert als $SSSD_CONF.bak"
|
|
||||||
else
|
|
||||||
echo "⚠️ SSSD-Konfigurationsdatei nicht gefunden, keine Sicherung vorgenommen."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$SSSD_CONF" ]]; then
|
if [[ -f "$SSSD_CONF" ]]; then
|
||||||
if grep -q "^enumerate" "$SSSD_CONF"; then
|
if grep -q "^enumerate" "$SSSD_CONF"; then
|
||||||
sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF"
|
sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF"
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
#!/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
|
|
||||||
|
|
||||||
if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then
|
|
||||||
echo "❌ Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
USER_NAME="$SUDO_USER"
|
|
||||||
|
|
||||||
echo "🔄 Plymouth und benötigte Pakete installieren..."
|
|
||||||
pacman -Syu --noconfirm plymouth
|
|
||||||
sudo -u $USER_NAME yay -Syu plymouth-theme-archlinux --noconfirm
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Initramfs neu erstellen
|
|
||||||
echo "🔄 Initramfs wird aktualisiert..."
|
|
||||||
mkinitcpio -P
|
|
||||||
|
|
||||||
# Arch Plymouth-Theme setzen
|
|
||||||
echo "🎨 Setze Plymouth-Theme auf 'arch'..."
|
|
||||||
plymouth-set-default-theme -R archlinux
|
|
||||||
|
|
||||||
# Korrekte systemd-boot Konfigurationsdatei suchen
|
|
||||||
BOOT_ENTRY_DIR="/boot/loader/entries"
|
|
||||||
BOOT_ENTRY_FILE=$(find "$BOOT_ENTRY_DIR" -name "*.conf" | head -n 1)
|
|
||||||
|
|
||||||
if [[ -z "$BOOT_ENTRY_FILE" ]]; then
|
|
||||||
echo "❌ Keine systemd-boot Eintragsdatei gefunden!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "🔍 Gefundene Konfigurationsdatei: $BOOT_ENTRY_FILE"
|
|
||||||
|
|
||||||
# Backup erstellen
|
|
||||||
BACKUP_FILE="${BOOT_ENTRY_FILE}.backup_$(date +%Y%m%d%H%M%S)"
|
|
||||||
cp "$BOOT_ENTRY_FILE" "$BACKUP_FILE"
|
|
||||||
echo "🛑 Backup gespeichert unter: $BACKUP_FILE"
|
|
||||||
|
|
||||||
NEW_PARAMS="quiet splash vt.global_cursor_default=0 loglevel=3 rd.luks.options=discard plymouth.ignore-serial-consoles"
|
|
||||||
|
|
||||||
# Prüfen, ob bereits eine "options"-Zeile existiert
|
|
||||||
if grep -q "^options " "$BOOT_ENTRY_FILE"; then
|
|
||||||
# Vorhandene Optionen extrahieren
|
|
||||||
EXISTING_PARAMS=$(grep "^options " "$BOOT_ENTRY_FILE" | cut -d' ' -f2-)
|
|
||||||
|
|
||||||
# Fehlende Parameter hinzufügen
|
|
||||||
for param in $NEW_PARAMS; do
|
|
||||||
if ! grep -qw "$param" <<< "$EXISTING_PARAMS"; then
|
|
||||||
EXISTING_PARAMS+=" $param"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Datei mit neuen Optionen aktualisieren
|
|
||||||
sed -i "s|^options .*|options $EXISTING_PARAMS|" "$BOOT_ENTRY_FILE"
|
|
||||||
else
|
|
||||||
# Falls keine options-Zeile existiert, einfach neue hinzufügen
|
|
||||||
echo "options $NEW_PARAMS" >> "$BOOT_ENTRY_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Einrichtung abgeschlossen. Bitte starte das System neu, um die Änderungen zu übernehmen."
|
|
||||||
@@ -10,23 +10,21 @@ fi
|
|||||||
|
|
||||||
# System aktualisieren und benötigte Pakete installieren
|
# System aktualisieren und benötigte Pakete installieren
|
||||||
echo "🔄 System wird aktualisiert..."
|
echo "🔄 System wird aktualisiert..."
|
||||||
sudo pacman -Syu --noconfirm
|
sudo apt update && sudo apt upgrade -y
|
||||||
yay -Syu --noconfirm
|
|
||||||
|
|
||||||
echo "ℹ️ Firewall (ufw) wird installiert..."
|
echo "ℹ️ Firewall (ufw) wird installiert..."
|
||||||
sudo pacman -S --noconfirm ufw
|
sudo apt install -y ufw
|
||||||
sudo ufw enable
|
sudo ufw enable
|
||||||
|
|
||||||
echo "ℹ️ Virenschutz (clamav) wird installiert..."
|
echo "ℹ️ Virenschutz (clamav) wird installiert..."
|
||||||
sudo pacman -S --noconfirm clamav
|
sudo apt install -y clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon
|
||||||
sudo systemctl enable --now clamav-freshclam
|
|
||||||
|
|
||||||
echo "ℹ️ Installiere Flatpak..."
|
echo "ℹ️ Installiere Flatpak..."
|
||||||
sudo pacman -S --noconfirm flatpak
|
sudo apt install -y flatpak
|
||||||
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
||||||
echo "ℹ️ Installiere nützliche Pakete..."
|
echo "ℹ️ Installiere nützliche Pakete..."
|
||||||
sudo pacman -S --noconfirm neovim rfkill xdg-user-dirs rsync bleachbit networkmanager
|
sudo apt install -y neovim rfkill xdg-user-dirs rsync bleachbit network-manager-gnome
|
||||||
|
|
||||||
# Portmaster installieren
|
# Portmaster installieren
|
||||||
read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer
|
read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer
|
||||||
@@ -34,7 +32,9 @@ answer=${answer,,} # In Kleinbuchstaben umwandeln
|
|||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
yay -S portmaster-stub-bin --noconfirm
|
wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb
|
||||||
|
sudo apt install -y /tmp/portmaster-installer.deb
|
||||||
|
rm /tmp/portmaster-installer.deb
|
||||||
|
|
||||||
echo "✅ Portmaster wurde installiert!"
|
echo "✅ Portmaster wurde installiert!"
|
||||||
fi
|
fi
|
||||||
@@ -45,13 +45,13 @@ answer=${answer,,} # In Kleinbuchstaben umwandeln
|
|||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
if pacman -Q firefox &>/dev/null; then
|
|
||||||
sudo pacman -Rns --noconfirm firefox
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "🌍 Waterfox wird installiert..."
|
echo "🌍 Waterfox wird installiert..."
|
||||||
yay -S --noconfirm waterfox
|
sudo apt remove -y firefox
|
||||||
|
sudo install -d -m 0755 /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null
|
||||||
|
echo 'deb https://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list
|
||||||
|
|
||||||
|
sudo apt update && sudo apt install -y waterfox
|
||||||
echo "✅ Waterfox wurde installiert!"
|
echo "✅ Waterfox wurde installiert!"
|
||||||
|
|
||||||
# Waterfox als Standardbrowser setzen
|
# Waterfox als Standardbrowser setzen
|
||||||
36
7_GrubTheme.sh
Executable file
36
7_GrubTheme.sh
Executable file
@@ -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!"
|
||||||
59
8_Plymouth.sh
Executable file
59
8_Plymouth.sh
Executable file
@@ -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=.*" "$GRUB_CFG"; then
|
||||||
|
sed -i "s|^GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT=\"$NEW_CMDLINE\"|" "$GRUB_CFG"
|
||||||
|
echo "🔄 GRUB wird aktualisiert..."
|
||||||
|
update-grub
|
||||||
|
else
|
||||||
|
echo "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."
|
||||||
@@ -7,8 +7,7 @@ if [[ $EUID -ne 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# System aktualisieren
|
# System aktualisieren
|
||||||
echo "🔄 System wird aktualisiert..."
|
apt update && apt upgrade -y
|
||||||
pacman -Syu --noconfirm || { echo "❌ Fehler beim Aktualisieren des Systems."; exit 1; }
|
|
||||||
|
|
||||||
# Steam-Installation
|
# Steam-Installation
|
||||||
read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer
|
read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer
|
||||||
@@ -16,11 +15,13 @@ answer=${answer,,} # In Kleinbuchstaben umwandeln
|
|||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
echo "🔄 Steam wird installiert..."
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install -y wget curl
|
||||||
|
|
||||||
# Steam aus dem offiziellen Repository installieren
|
wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb
|
||||||
pacman -S --noconfirm steam || { echo "❌ Fehler beim Installieren von Steam."; exit 1; }
|
apt install -y /tmp/steam.deb
|
||||||
echo "✅ Steam wurde erfolgreich installiert."
|
rm /tmp/steam.deb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Lutris-Installation
|
# Lutris-Installation
|
||||||
@@ -29,11 +30,18 @@ answer=${answer,,} # In Kleinbuchstaben umwandeln
|
|||||||
answer=${answer:-n} # Standardwert 'n', falls leer
|
answer=${answer:-n} # Standardwert 'n', falls leer
|
||||||
|
|
||||||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||||||
echo "🔄 Lutris wird installiert..."
|
LUTRIS_KEYRING="/etc/apt/keyrings/lutris.gpg"
|
||||||
|
LUTRIS_REPO="https://download.opensuse.org/repositories/home:/strycore/Debian_12/"
|
||||||
|
|
||||||
# Lutris aus dem offiziellen Repository installieren
|
mkdir -p /etc/apt/keyrings
|
||||||
pacman -S --noconfirm lutris || { echo "❌ Fehler beim Installieren von Lutris."; exit 1; }
|
wget -qO /tmp/lutris-key.gpg "${LUTRIS_REPO}Release.key"
|
||||||
echo "✅ Lutris wurde erfolgreich installiert."
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✅ Skript abgeschlossen!"
|
echo "✅ Skript abgeschlossen!"
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
Dieses Repository enthält Skripte um ein Linux System mit Hyprland und diversen Programmen aufzusetzen.
|
Dieses Repository enthält Skripte um ein Linux System mit Hyprland und diversen Programmen aufzusetzen.
|
||||||
Die entsprechenden Skripte befinden sich in den Branches zur jeweiligen Distribution.
|
Die entsprechenden Skripte befinden sich in den Branches zur jeweiligen Distribution.
|
||||||
|
|
||||||
**Mit diesen Skripten kann *ARCH Linux* mit *Hyprland* und diversen Programmen aufgesetzt werden.**
|
**Mit diesen Skripten kann *Debian 12 (Bookworm)* mit *Hyprland* und diversen Programmen aufgesetzt werden.**
|
||||||
|
|
||||||
## Anforderungen
|
## Anforderungen
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ Um die Skripte in diesem Repository auszuführen, stelle sicher, dass die folgen
|
|||||||
|
|
||||||
1. Klone das Repository:
|
1. Klone das Repository:
|
||||||
```bash
|
```bash
|
||||||
git clone -b arch https://gitea.creative-dragonslayer.de/DragonSlayer_14/Setup.git
|
git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Setup.git
|
||||||
```
|
```
|
||||||
2. Wechsle in den richtigen Branch.
|
2. Wechsle in den richtigen Branch.
|
||||||
3. Navigiere in das Verzeichnis `Setup`, um die ausführbaren Dateien und Ressourcen zu finden.
|
3. Navigiere in das Verzeichnis `Setup`, um die ausführbaren Dateien und Ressourcen zu finden.
|
||||||
|
|||||||
Reference in New Issue
Block a user