12 changed files with 663 additions and 388 deletions
+133 -93
View File
@@ -1,16 +1,115 @@
#!/bin/bash #!/bin/bash
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Root-Rechte prüfen
if [ "$EUID" -ne 0 ]; then if [ "$(id -u)" -ne 0 ]; then
echo "Bitte führen Sie das Skript mit Root-Rechten aus." echo "Bitte als root ausführen!"
exit 1 exit 1
fi fi
apt update && apt upgrade -y apt update && apt upgrade -y
apt install -y git sudo
# Der Code, der eingefügt werden soll # sources-list Config
CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then 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
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Datei-Pfad zur sources.list
SOURCE_LIST="/etc/apt/sources.list"
# Backup erstellen
cp "$SOURCE_LIST" "$SOURCE_LIST.bak"
echo "️ Aktualisiere $SOURCE_LIST..."
# Temporäre Datei erstellen
TEMP_FILE=$(mktemp)
# Fehlende Komponenten, die hinzugefügt werden sollen
REQUIRED_COMPONENTS=("main" "non-free" "non-free-firmware" "contrib")
while IFS= read -r line; do
# Falls die Zeile auskommentiert oder leer ist, unverändert übernehmen
if [[ "$line" =~ ^# || -z "$line" ]]; then
echo "$line" >>"$TEMP_FILE"
continue
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
apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl
# GRUB-Config
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
echo "️ GRUB wird so konfiguriert, dass es nur im Fehlerfall angezeigt wird..."
# Sicherstellen, dass die Datei existiert
GRUB_CFG="/etc/default/grub"
if [[ ! -f "$GRUB_CFG" ]]; then
echo "❌ Fehler: $GRUB_CFG nicht gefunden!"
else
# Backup der aktuellen GRUB-Konfiguration
cp "$GRUB_CFG" "$GRUB_CFG.bak"
# Konfigurationsänderungen vornehmen
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' "$GRUB_CFG"
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
# sbin in Path
read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cat << 'EOF' >/etc/profile.d/sbin_in_path.sh
if groups | grep -q "\bsudo\b"; then
case ":$PATH:" in case ":$PATH:" in
*":/sbin:"*) ;; *":/sbin:"*) ;;
*) export PATH="$PATH:/sbin" ;; *) export PATH="$PATH:/sbin" ;;
@@ -19,33 +118,40 @@ case ":$PATH:" in
*":/usr/sbin:"*) ;; *":/usr/sbin:"*) ;;
*) export PATH="$PATH:/usr/sbin" ;; *) export PATH="$PATH:/usr/sbin" ;;
esac esac
fi' fi
EOF
# Saubere Lösung über /etc/profile.d/ echo "️ sbin wurde zum PATH für sudo-Nutzer hinzugefügt."
echo "$CONFIG_BLOCK" >/etc/profile.d/custom_path.sh fi
# Sudo-Hinweis für bash.bashrc # sudo-Hinweis
SUDO_HINT_BLOCK='# sudo hint read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
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 *\ admin\ *|*\ sudo\ *) case " $(groups) " in *\ admin\ *|*\ sudo\ *)
if [ -x /usr/bin/sudo ]; then if [ -x /usr/bin/sudo ]; then
cat <<-EOF echo 'To run a command as administrator (user "root"), use "sudo <command>".'
To run a command as administrator (user "root"), use "sudo <command>". echo 'See "man sudo_root" for details.'
See "man sudo_root" for details.
EOF
fi fi
esac esac
fi' fi
EOF
# Prüfen, ob der sudo-Hinweis bereits existiert echo "️ sudo-Hinweis wurde hinzugefügt!"
if ! grep -Fxq "# sudo hint" /etc/bash.bashrc; then
echo -e "\n$SUDO_HINT_BLOCK" | tee -a /etc/bash.bashrc >/dev/null
echo "Sudo-Hinweis zur bash.bashrc hinzugefügt."
else
echo "Sudo-Hinweis ist bereits in bash.bashrc vorhanden."
fi fi
XDG_BLOCK='# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS # sudo-Hinweis
read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cat << 'EOF' >/etc/profile.d/xdg_dirs_desktop_session.sh
# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS
DEFAULT_XDG_CONFIG_DIRS="/etc/xdg" DEFAULT_XDG_CONFIG_DIRS="/etc/xdg"
DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/" DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
@@ -70,77 +176,11 @@ if [ -n "$DESKTOP_SESSION" ]; then
export XDG_DATA_DIRS export XDG_DATA_DIRS
fi fi
fi fi
' EOF
echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "️ XDG-Data-Dirs wurden gesetzt!"
echo "Passwort für sudo-Nutzer setzen..."
passwd root
# WLAN-Verbindung.
# Frage, ob eine WLAN-Verbindung aufgebaut werden soll
read -p "Möchten Sie eine WLAN-Verbindung aufbauen? (ja/nein): " RESPONSE
if [[ "$RESPONSE" == "ja" ]]; then
# Schritt 1: WLAN-Adapter automatisch ermitteln
echo "Ermittle verfügbare WLAN-Adapter..."
WLAN_ADAPTERS=$(iw dev | grep Interface | awk '{print $2}')
if [[ -z "$WLAN_ADAPTERS" ]]; then
echo "Es wurden keine WLAN-Adapter gefunden. Bitte stellen Sie sicher, dass ein WLAN-Adapter verfügbar ist."
exit 1
fi fi
# Wenn nur ein Adapter gefunden wurde, automatisch auswählen chmod +x /etc/profile.d/*
if [[ $(echo "$WLAN_ADAPTERS" | wc -l) -eq 1 ]]; then
WLAN_INTERFACE="$WLAN_ADAPTERS"
echo "Gefundener WLAN-Adapter: $WLAN_INTERFACE"
else
# Wenn mehrere Adapter gefunden wurden, den Benutzer fragen
echo "Mehrere WLAN-Adapter gefunden:"
echo "$WLAN_ADAPTERS"
read -p "Bitte geben Sie den gewünschten WLAN-Adapter ein: " WLAN_INTERFACE
fi
# Schritt 2: Eingabe der SSID und des Passworts echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!"
read -p "Bitte geben Sie die SSID des Routers ein: " ROUTER_SSID
read -sp "Bitte geben Sie das Passwort für die SSID ein: " ROUTER_PASSWORD
echo
# Schritt 3: Erstellen der WPA-Konfigurationsdatei
CONFIG_FILE="/root/wpa.conf"
echo "Erstelle WPA-Konfigurationsdatei unter $CONFIG_FILE..."
wpa_passphrase "$ROUTER_SSID" "$ROUTER_PASSWORD" > "$CONFIG_FILE"
# Hinweis für Sonderzeichen in der SSID
echo "Hinweis: Wenn Ihre SSID Sonderzeichen enthält, bearbeiten Sie die Datei $CONFIG_FILE manuell."
# Schritt 4: Verbindung mit wpa_supplicant aufbauen
echo "Starte wpa_supplicant..."
wpa_supplicant -B -i "$WLAN_INTERFACE" -c "$CONFIG_FILE"
# Schritt 5: Überprüfen, ob die Verbindung hergestellt wurde
echo "Überprüfe die Verbindung..."
sleep 5 # Wartezeit, um die Verbindung aufzubauen
IW_OUTPUT=$(iw dev "$WLAN_INTERFACE" link)
if echo "$IW_OUTPUT" | grep -q "Connected to"; then
echo "Verbindung erfolgreich hergestellt!"
echo "$IW_OUTPUT"
else
echo "Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie die Konfiguration."
exit 1
fi
# Schritt 6: IP-Adresse und Netzwerkkonfiguration über DHCP abrufen
echo "Hole IP-Adresse und Netzwerkkonfiguration über DHCP..."
dhcpcd
echo "Die WPA-verschlüsselte Verbindung wurde erfolgreich hergestellt!"
else
echo "Abbruch. Es wird keine WLAN-Verbindung aufgebaut."
fi
echo "Fertig! Das System wird neugestartet."
reboot
+54 -3
View File
@@ -4,7 +4,7 @@ set -e # Skript bricht bei Fehlern ab
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
if [[ $EUID -eq 0 ]]; then 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." echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird."
exit 1 exit 1
fi fi
@@ -234,10 +234,61 @@ flatpak install flathub net.nokyan.Resources -y
flatpak install flathub org.gnome.World.Secrets -y flatpak install flathub org.gnome.World.Secrets -y
# Archivverwaltung # Archivverwaltung
flatpak install flathub org.gnome.FileRoller -y flatpak install flathub org.gnome.FileRoller -y
# Obfuscate
flatpak install flathub com.belmoussaoui.Obfuscate -y
# Flatseal
flatpak install com.github.tchx84.Flatseal -y
# VeraCrypt installieren
read -p "❓ Soll VeraCrypt installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
echo "🔄 Installiere VeraCrypt..." echo "🔄 Installiere VeraCrypt..."
sudo add-apt-repository ppa:unit193/encryption -y echo 'deb http://download.opensuse.org/repositories/home:/unit193:/veracrypt/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:unit193:veracrypt.list
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
sudo apt update sudo apt update
sudo apt install -y veracrypt sudo apt install veracrypt
fi
# Webmin installieren
read -p "❓ Soll webmin installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
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
sudo apt install webmin -y
fi
# Waydroid installieren
read -p "❓ Soll Waydroid installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
sudo systemctl enable --now waydroid-container
sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null
for app in ~/.local/share/applications/waydroid.*.desktop; do
grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app
done
EOF
sudo chmod +x /etc/profile.d/*
echo "⚠️ Beachte, dass in Portmaster unter 'Network Noise' die Ports 53 und 67 komplett freigegeben sind!"
fi
echo "✅ Alle Programme wurden erfolgreich installiert!" echo "✅ Alle Programme wurden erfolgreich installiert!"
+40
View 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
+13 -8
View File
@@ -2,25 +2,30 @@
# Root-Rechte prüfen # Root-Rechte prüfen
if [ "$(id -u)" -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then
echo "Bitte nicht als Root ausführen! Das Skript nutzt sudo, falls nötig." echo "Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
# Verzeichnis setzen # Verzeichnis setzen
REPO_DIR="$HOME/Linux-Active-Directory-join-script" REPO_DIR="/tmp/Linux-Active-Directory-join-script"
# Repository klonen, falls es noch nicht existiert # Repository klonen, falls es noch nicht existiert
if [ -d "$REPO_DIR" ]; then if [ -d "$REPO_DIR" ]; then
echo "Repository existiert bereits. Überspringe das Klonen." echo "Repository existiert bereits. Überspringe das Klonen."
else else
echo "Klonen des Repositories..." echo "Klonen des Repositories..."
git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR" git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR"
fi fi
# In das Verzeichnis wechseln # In das Verzeichnis wechseln
cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; }
# AD-Skript ausführen # AD-Skript ausführen
echo "Starte Active Directory Verbindung..." if [ -f "ADconnection.sh" ]; then
sudo bash ADconnection.sh chmod +x ADconnection.sh
echo "️ Starte Active Directory setup..."
./ADconnection.sh
else
echo "❌ Fehler: ADconnection.sh nicht gefunden!"
exit 1
fi
+26 -4
View File
@@ -1,9 +1,31 @@
#!/bin/bash #!/bin/bash
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Root-Rechte prüfen
if [[ $EUID -eq 0 ]]; then if [ "$(id -u)" -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." echo "Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh) # 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
+12 -32
View File
@@ -2,19 +2,24 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "❌ Bitte als root ausführen!"
exit 1 exit 1
fi fi
# Tatsächlichen Benutzer ermitteln (nicht root) # Tatsächlichen Benutzer ermitteln (nicht root)
if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then
echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden."
exit 1 exit 1
fi 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
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Eintrag aus getent passwd holen # Eintrag aus getent passwd holen
USER_ENTRY=$(getent passwd "$USER_NAME") USER_ENTRY=$(getent passwd "$USER_NAME")
@@ -24,17 +29,17 @@ cp /etc/passwd /etc/passwd.bak
if grep -q "^$USER_NAME:" /etc/passwd; then if grep -q "^$USER_NAME:" /etc/passwd; then
# Existierenden Eintrag aktualisieren # Existierenden Eintrag aktualisieren
sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd
echo "Shell für $USER_NAME wurde auf zsh aktualisiert." echo "Shell für $USER_NAME wurde auf zsh aktualisiert."
else else
# Neuen Eintrag hinzufügen # Neuen Eintrag hinzufügen
UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }')
echo "$UPDATED_ENTRY" >>/etc/passwd echo "$UPDATED_ENTRY" >>/etc/passwd
echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell."
fi fi
# Repository klonen # Repository klonen
REPO_DIR="$USER_HOME/Ubuntu-Hyprland" REPO_DIR="$USER_HOME/Debian-Hyprland"
sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-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"
@@ -58,31 +63,6 @@ if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then
else else
echo "️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." echo "️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden."
fi fi
# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt
if [[ -n "$SUDO_USER" ]]; then
USER_HOME=$(eval echo "~$SUDO_USER")
else
USER_HOME="$HOME"
fi fi
# Pfad zur .zshrc-Datei des tatsächlichen Benutzers echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen."
ZSHRC_FILE="$USER_HOME/.zshrc"
# Sicherstellen, dass die Datei existiert
if [[ -f "$ZSHRC_FILE" ]]; then
# Zeilen mit "fastfetch" am Anfang auskommentieren
sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE"
# Prüfen, ob "neofetch" bereits in der Datei steht
if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then
# Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen
echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE"
fi
echo "Die Änderungen wurden erfolgreich vorgenommen."
else
echo "Die Datei $ZSHRC_FILE wurde nicht gefunden."
fi
echo "✅ Installation abgeschlossen!"
+11 -5
View File
@@ -2,13 +2,18 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "Dieses Skript muss als root ausgeführt werden."
exit 1 exit 1
fi fi
read -p "❓ Soll SDDM so konfiguriert werden, dass Domänenbenutzer angezeigt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# SDDM-Konfigurationsdatei in sddm.conf.d erstellen # SDDM-Konfigurationsdatei in sddm.conf.d erstellen
SDDM_CONF_DIR="/etc/sddm.conf.d" SDDM_CONF_DIR="/etc/sddm.conf.d"
SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/custom.conf" SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf"
mkdir -p "$SDDM_CONF_DIR" mkdir -p "$SDDM_CONF_DIR"
# Bestehende Konfiguration sichern und anpassen # Bestehende Konfiguration sichern und anpassen
@@ -16,13 +21,13 @@ if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF"
sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF"
sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF"
echo "MaximumUid=9999999999" >>"$SDDM_CUSTOM_CONF" echo "MaximumUid=99999999999999999999" >>"$SDDM_CUSTOM_CONF"
echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF"
echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF"
else else
cat <<EOF >"$SDDM_CUSTOM_CONF" cat <<EOF >"$SDDM_CUSTOM_CONF"
[Users] [Users]
MaximumUid=9999999999 MaximumUid=999999999999999999
MinimumUid=1000 MinimumUid=1000
HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin
EOF EOF
@@ -43,5 +48,6 @@ fi
# SSSD und SDDM neu starten # SSSD und SDDM neu starten
systemctl restart sssd systemctl restart sssd
systemctl restart sddm systemctl restart sddm
fi
echo "SDDM wurde so konfiguriert, dass lokale und bereits angemeldete Domänenbenutzer angezeigt werden." echo "✅ Konfiguration von SDDM und sssd abgeschlossen!"
+47 -38
View File
@@ -2,35 +2,57 @@
set -e # Skript bricht bei Fehlern ab set -e # Skript bricht bei Fehlern ab
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Root-Rechte prüfen
if [[ $EUID -eq 0 ]]; then if [ "$(id -u)" -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." echo "Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
# System aktualisieren und benötigte Pakete installieren # System aktualisieren und benötigte Pakete installieren
echo "🔄 System wird aktualisiert..." echo "🔄 System wird aktualisiert..."
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y sudo apt update && sudo apt upgrade -y
echo "🔄 Entferne Pakete..." echo "️ Firewall (ufw) wird installiert..."
sudo apt install -y ufw
sudo apt remove -y firefox kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox
echo "🔄 Installiere Pakete..."
sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon
sudo ufw enable sudo ufw enable
# Flatpak Flathub-Repo hinzufügen echo "️ Virenschutz (clamav) wird installiert..."
sudo apt install -y clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon
echo "️ Installiere 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..."
sudo apt install -y neovim rfkill xdg-user-dirs rsync bleachbit network-manager-gnome
# Portmaster installieren
read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
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!"
fi
# Waterfox-Installation # Waterfox-Installation
read -p "❓ Soll Firefox durch Waterfox ersetzt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
echo "🌍 Waterfox wird installiert..." echo "🌍 Waterfox wird installiert..."
sudo apt remove -y firefox
sudo install -d -m 0755 /etc/apt/keyrings sudo install -d -m 0755 /etc/apt/keyrings
echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list 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
curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/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 sudo apt update && sudo apt install -y waterfox
echo "✅ Waterfox wurde installiert!"
# Waterfox als Standardbrowser setzen # Waterfox als Standardbrowser setzen
echo "🌍 Setze Waterfox als Standardbrowser..." echo "🌍 Setze Waterfox als Standardbrowser..."
@@ -46,8 +68,14 @@ if command -v xdg-settings >/dev/null 2>&1; then
else else
echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen."
fi fi
fi
# Hyprland User Bindings # Hyprland User Bindings
read -p "❓ Sollen Anpassungen an den Hyprland-Keybinds vorgenomen werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
mkdir -p "$HYPR_CONFIG_DIR" mkdir -p "$HYPR_CONFIG_DIR"
@@ -67,26 +95,6 @@ for BIND in "${!KEYBINDS[@]}"; do
echo "️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" echo "️ Keybind existiert bereits: ${KEYBINDS[$BIND]}"
fi fi
done done
echo "🔄 Füge Autostart-Apps hinzu..."
# Pfad zur Konfigurationsdatei
CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf"
# Zeile, die hinzugefügt werden soll
LINE_TO_ADD="exec-once = tuxedo-control-center --tray"
# Überprüfen, ob die Datei existiert
if [ -f "$CONFIG_FILE" ]; then
# Überprüfen, ob die Zeile bereits existiert
if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then
# Zeile hinzufügen
echo "$LINE_TO_ADD" >> "$CONFIG_FILE"
echo "Zeile wurde erfolgreich hinzugefügt."
else
echo "Die Zeile existiert bereits in der Datei."
fi
else
echo "Die Datei $CONFIG_FILE existiert nicht."
fi fi
# Standardvorlagen ablegen # Standardvorlagen ablegen
@@ -119,6 +127,11 @@ TARGET_DIR="$HOME/.config/hypr/UserScripts"
CONFIG_DIR="$HOME/.config/hypr/UserConfigs" CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle
read -p "❓ Sollen Anpassungen an den Users-Dirs in den Hyprland-Skripten vorgenommen werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Bereinige fälschlicherweise kopierte Dateien # Bereinige fälschlicherweise kopierte Dateien
echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..."
if [[ -d "$TARGET_DIR" ]]; then if [[ -d "$TARGET_DIR" ]]; then
@@ -215,13 +228,9 @@ else
echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise."
fi fi
# Überprüfen, ob der Ordner existiert
if [ -d "$(xdg-user-dir)/Pictures" ]; then
echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..."
rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/"
rm -r "$(xdg-user-dir)/Pictures/" rm -r "$(xdg-user-dir)/Pictures/"
else
echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig."
fi fi
echo "✅ Skript erfolgreich ausgeführt!" echo "✅ Skript erfolgreich ausgeführt!"
Executable
+36
View 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!"
Executable
+59
View 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."
+31 -3
View File
@@ -2,7 +2,7 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "Dieses Skript muss als root ausgeführt werden."
exit 1 exit 1
fi fi
@@ -10,10 +10,38 @@ fi
apt update && apt upgrade -y apt update && apt upgrade -y
# Steam-Installation # Steam-Installation
read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
dpkg --add-architecture i386 dpkg --add-architecture i386
apt update apt update
apt install -y wget curl apt install -y wget curl
apt install -y steam lutris wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb
apt install -y /tmp/steam.deb
rm /tmp/steam.deb
fi
echo "✅ Installation von Steam und Lutris abgeschlossen!" # Lutris-Installation
read -p "❓ Soll Lutris installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
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
fi
echo "✅ Skript abgeschlossen!"
+1 -2
View File
@@ -5,8 +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 *Tuxedo OS*, das auf Ubuntu 24.04 (Noble Numbat) basiert, mit *Hyprland* und diversen **Mit diesen Skripten kann *Debian 12 (Bookworm)* mit *Hyprland* und diversen Programmen aufgesetzt werden.**
Programmen aufgesetzt werden.**
## Anforderungen ## Anforderungen