#!/bin/sh set -e # === Colors === RED="\033[1;31m" GREEN="\033[1;32m" YELLOW="\033[1;33m" BLUE="\033[1;34m" MAGENTA="\033[1;35m" CYAN="\033[1;36m" RESET="\033[0m" log_info() { printf "${CYAN}[*]${RESET} %s\n" "$1"; } log_success() { printf "${GREEN}[✓]${RESET} %s\n" "$1"; } log_warn() { printf "${YELLOW}[!]${RESET} %s\n" "$1"; } log_error() { printf "${RED}[✗]${RESET} %s\n" "$1"; } ORIG_PWD=$(pwd) ORIG_USER=$(logname) ORIG_HOME=$(getent passwd "$ORIG_USER" | cut -d: -f6) # === Elevate to root if needed === if [ "$(id -u)" -ne 0 ]; then exec sudo "$0" "$@" fi # === Package groups === ESSENTIAL_PACKAGES=" base-devel python3 vim neovim ranger firefox " DISPLAY_MANAGER=" sddm qt5-graphicaleffects " WAYLAND_ENVIRONMENT=" hyprland hyprpaper waybar kitty wofi mako libnotify grim slurp wl-clipboard wl-clip-persist wayland-utils xorg-xwayland " AUDIO_PACKAGES=" pipewire wireplumber pipewire-pulse pavucontrol " FONTS_AND_THEME=" otf-font-awesome noto-fonts noto-fonts-cjk ttf-jetbrains-mono orchis-theme " MEDIA_PACKAGES=" mpv eog lollypop ffmpeg " # === Functions === update_system() { log_info "Updating system..." pacman -Syu --noconfirm } install_packages() { log_info "Installing packages..." pacman -S --noconfirm --needed \ $ESSENTIAL_PACKAGES \ $DISPLAY_MANAGER \ $WAYLAND_ENVIRONMENT \ $AUDIO_PACKAGES \ $FONTS_AND_THEME \ $MEDIA_PACKAGES } apply_gtk_settings() { log_info "Applying GTK settings..." export XDG_RUNTIME_DIR="/run/user/$(id -u "$ORIG_USER")" DBUS_ADDR="unix:path=${XDG_RUNTIME_DIR}/bus" for setting in \ "org.gnome.desktop.interface gtk-theme Orchis-Dark-Compact" \ "org.gnome.desktop.interface icon-theme Orchis-Dark-Compact" \ "org.gnome.desktop.interface color-scheme prefer-dark" do if sudo -u "$ORIG_USER" \ DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR" \ gsettings set $setting; then log_success "Set $setting" else log_warn "Failed to set $setting" fi done } enable_sddm() { log_info "Enabling SDDM..." systemctl enable sddm } install_sddm_theme() { log_info "Installing SDDM theme..." if pacman -Q where-is-my-sddm-theme-git >/dev/null 2>&1; then log_success "SDDM theme already installed." return fi sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories" cd "$ORIG_HOME/Repositories" if [ ! -d "where-is-my-sddm-theme" ]; then sudo -u "$ORIG_USER" git clone https://aur.archlinux.org/where-is-my-sddm-theme-git.git where-is-my-sddm-theme else log_warn "Theme repo already exists, skipping clone." fi cd "$ORIG_HOME/Repositories/where-is-my-sddm-theme" sudo -u "$ORIG_USER" makepkg -si --noconfirm } run_dotfiles_setup() { log_info "Running dotfiles setup..." cd "$ORIG_PWD" [ -f "setup_user.py" ] && sudo -u "$ORIG_USER" HOME="$ORIG_HOME" python3 setup_user.py \ || log_warn "setup_user.py not found." [ -f "setup_system.py" ] && python3 setup_system.py \ || log_warn "setup_system.py not found." sudo -u "$ORIG_USER" mkdir -p \ "$ORIG_HOME/Downloads" \ "$ORIG_HOME/Documents" \ "$ORIG_HOME/Pictures" \ "$ORIG_HOME/Videos" \ "$ORIG_HOME/Repositories" } # === Main flow === update_system install_packages apply_gtk_settings enable_sddm install_sddm_theme run_dotfiles_setup log_success "Setup completed successfully."