#!/bin/bash # Root-Rechte prüfen if [ "$(id -u)" -ne 0 ]; then echo "❌ Bitte als root ausführen!" exit 1 fi # System aktualisieren und benötigte Pakete installieren 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 systemctl enable --now NetworkManager systemctl enable --now bluetooth # 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 # Tatsächlichen Benutzer ermitteln (nicht root) 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 CURRENT_DIR=$(pwd) USER_NAME="$SUDO_USER" # AUR-Verzeichnis erstellen mkdir -p $AUR_CODE_DIR sudo chmod -R 777 $AUR_CODE_DIR # Installiere yay cd $AUR_CODE_DIR git clone https://aur.archlinux.org/yay.git cd yay makepkg -sic --noconfirm || { echo "❌ Fehler beim Erstellen von adcli"; exit 1; } git clean -dfx cd $CURRENT_DIR fi # Gruppe "sudo" und Sudoers-Regel hinzufügen read -p "❓ Soll die Gruppe 'sudo' erstellt und ihr Sudo-Zugriff gewährt werden? (j/n) [n]: " answer answer=${answer,,} answer=${answer:-n} if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then # Gruppe "sudo" erstellen, falls sie nicht existiert 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 SUDOERS_FILE="/etc/sudoers.d/00-sudo-group" 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 read -p "❓ Welcher Benutzer soll zur Gruppe 'sudo' hinzugefügt werden? (Leer lassen für keinen): " username if [[ -n "$username" ]]; then if id "$username" &>/dev/null; then usermod -aG sudo "$username" echo "ℹ️ Benutzer '$username' wurde zur Gruppe 'sudo' hinzugefügt." else echo "❌ Benutzer '$username' existiert nicht!" fi fi fi # sbin in PATH aufnehmen read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer answer=${answer,,} answer=${answer:-n} 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 *":/sbin:"*) ;; *) export PATH="$PATH:/sbin" ;; esac case ":$PATH:" in *":/usr/sbin:"*) ;; *) export PATH="$PATH:/usr/sbin" ;; esac fi EOF echo "ℹ️ sbin wurde zum PATH für sudo-Nutzer hinzugefügt." fi # sudo-Hinweis read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer answer=${answer,,} answer=${answer:-n} 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 case " $(groups) " in *\ sudo\ *) if [ -x /usr/bin/sudo ]; then echo 'To run a command as administrator (user "root"), use "sudo ".' echo 'See "man sudo_root" for details.' fi esac fi EOF echo "ℹ️ sudo-Hinweis wurde hinzugefügt!" fi # XDG-Data-Dirs setzen read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer answer=${answer,,} answer=${answer:-n} 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_DATA_DIRS="/usr/local/share/:/usr/share/" if [ -n "$DESKTOP_SESSION" ]; then # readd default if was empty if [ -z "$XDG_CONFIG_DIRS" ]; then XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS" fi if [ -n "${XDG_CONFIG_DIRS##*$DEFAULT_XDG_CONFIG_DIRS/xdg-$DESKTOP_SESSION*}" ]; then XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$DESKTOP_SESSION":"$XDG_CONFIG_DIRS" fi export XDG_CONFIG_DIRS # gnome is already added if gnome-session installed if [ "$DESKTOP_SESSION" != "gnome" ]; then if [ -z "$XDG_DATA_DIRS" ]; then XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS" fi if [ -n "${XDG_DATA_DIRS##*/usr/share/$DESKTOP_SESSION*}" ]; then XDG_DATA_DIRS=/usr/share/"$DESKTOP_SESSION":"$XDG_DATA_DIRS" fi export XDG_DATA_DIRS fi fi EOF echo "ℹ️ XDG-Data-Dirs wurden gesetzt!" fi chmod +x /etc/profile.d/* echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!"