196 lines
6.3 KiB
Bash
Executable File
196 lines
6.3 KiB
Bash
Executable File
#!/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"
|
||
|
||
# Sicherstellen, dass benötigte Pakete installiert sind
|
||
pacman -Syu --noconfirm glib2 git base-devel --needed
|
||
|
||
# AUR-Verzeichnis erstellen
|
||
mkdir -p $AUR_CODE_DIR
|
||
sudo chmod -R 777 $AUR_CODE_DIR
|
||
|
||
# Installiere yay
|
||
cd $AUR_CODE_DIR
|
||
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 adcli"; exit 1; }
|
||
sudo -u USER_NAME git clean -dfx
|
||
|
||
cd $CURRENT_DIR
|
||
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
|
||
echo "✅ 'timeout 0' wurde erfolgreich gesetzt."
|
||
fi
|
||
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 <command>".'
|
||
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!"
|