Files
hypr-config/build.sh
2025-08-09 14:57:36 +02:00

169 lines
3.6 KiB
Bash
Executable File

#!/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."