diff --git a/.scripts/setup.sh b/.scripts/setup.sh deleted file mode 100755 index ec64ef5..0000000 --- a/.scripts/setup.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/bash - -# local package install : xbps-install -S --repository -# exmaple : sudo xbps-install -S --repository hostdir/binpkgs hyprland-0.35.0_1 - -update_pkgs=false - -exec 1> >(tee "../hyprland_setup_log") - -log() { - echo "*********** $1 ***********" - now=$(date +"%T") - echo "$now $1" >>../hyprland_setup_log -} - -check() { - if [ "$1" != 0 ]; then - echo "$2 error : $1" | tee -a ../hyprland_setup_log - exit 1 - fi -} - -# update package manager and system packages : -log "Update xbps/system" -sudo xbps-install -u xbps -if [ $update_pkgs = true ]; then - sudo xbps-install -Syu -fi -check "$?" "Update xbps/system" -log "xbps/system updated" - -# clear cache and older kernels : -sudo xbps-remove -yO -sudo xbps-remove -yo -sudo vkpurge rm all - -# install required packages for system : -log "Install base system packages" -sudo xbps-install -Sy \ - git \ - stow \ - dbus \ - seatd \ - elogind \ - polkit \ - NetworkManager \ - gnome-keyring \ - polkit-gnome \ - mesa-dri \ - pipewire \ - wireplumber \ - inotify-tools -check "$?" "Install base system packages" -log "Base packges installed" - -log "Install nonfree repo" -sudo xbps-install -Sy \ - void-repo-nonfree - -# install hyprland packages : -log "Install Hyprland packages" -sudo xbps-install -Sy \ - xdg-desktop-portal \ - xdg-desktop-portal-wlr \ - swayidle \ - swaylock \ - dunst \ - libnotify \ - Waybar \ - rofi \ - playerctl \ - grim \ - slurp \ - jq \ - cliphist \ - wl-clipboard \ - font-awesome6 \ - blueman \ - bluez \ - brightnessctl \ - libspa-bluetooth \ - mesa-dri \ - nautilus \ - pamixer \ - pavucontrol \ - pulsemixer \ - pipewire \ - terminus-font -check "$?" "Install Hyprland environment" -log "Hyprland environment installed" - -log "Symlinking configs" -stow hyprland -check "$?" "Copy settings to home folder" -log "Settings copied" - -log "Add user to needed groups" -sudo usermod -a $USER -G _seatd -sudo usermod -a $USER -G bluetooth -check "$?" "Add user to needed groups" -log "User added to needed groups" - -log "Disable grub menu" -echo 'GRUB_TIMEOUT=0' | sudo tee -a /etc/default/grub -echo 'GRUB_TIMEOUT_STYLE=hidden' | sudo tee -a /etc/default/grub -echo 'GRUB_CMDLINE_LINUX_DEFAULT="loglevel=1 quiet splash"' | sudo tee -a /etc/default/grub -sudo update-grub -check "$?" "Disable grub menu" -log "Grub menu disabled" - -log "Enable services" -sudo ln -s /etc/sv/dbus /var/service -sudo ln -s /etc/sv/seatd /var/service -sudo ln -s /etc/sv/elogind /var/service -sudo ln -s /etc/sv/NetworkManager /var/service -sudo ln -s /etc/sv/polkitd /var/service -sudo ln -s /etc/sv/bluetoothd /var/service -check "$?" "Enable services" -log "Services enabled" - -log "Setup is done, please log out and log in back again ( type exit )" diff --git a/.scripts/font.sh b/scripts/fonts-installer.sh similarity index 99% rename from .scripts/font.sh rename to scripts/fonts-installer.sh index c6abf0a..48db225 100755 --- a/.scripts/font.sh +++ b/scripts/fonts-installer.sh @@ -6,4 +6,5 @@ install_ttf_font() { } cd ../host/ui/fonts + install_ttf_font diff --git a/scripts/pkgs-installer.sh b/scripts/pkgs-installer.sh new file mode 100755 index 0000000..8d49ebf --- /dev/null +++ b/scripts/pkgs-installer.sh @@ -0,0 +1,134 @@ +#!/bin/bash + +UPDATE_PKGS=false +CLEAR_CACHE=false +DISABLE_GRUB_MENU=false + +declare -A PACKAGES=( + ["BASE_PACKAGES"]="git stow dbus seatd elogind polkit NetworkManager gnome-keyring polkit-gnome mesa-dri pipewire wireplumber inotify-tools void-repo-multilib void-repo-nonfree wpa_supplicant wifish wpa-cute wpa_gui xorg gnome-keyring polkit-gnome mtpfs inotify-tools ffmpeg libnotify git base-devel" + ["HYPRLAND_PACKAGES"]="Waybar rofi avizo dunst swaybg mpvpaper grim jq slurp cliphist wl-clipboard swayidle" + ["AMD_DRIVERS"]="Vulkan-Headers Vulkan-Tools Vulkan-ValidationLayers-32bit mesa-vulkan-radeon mesa-vulkan-radeon-32bit vulkan-loader vulkan-loader-32bit libspa-vulkan libspa-vulkan-32bit amdvlk mesa-dri" +) + +exec 1> >(tee "../hyprland_setup_log") + +check_sudo() { + if [ "$(id -u)" != 0 ]; then + echo "Please run the script with sudo." + exit 1 + fi +} + +log() { + local message="*********** $1 ***********" + local timestamp=$(date +"%T") + + echo -e "\n$message" + echo "$timestamp $1" >>../hyprland_setup_log +} + +check() { + if [ "$1" != 0 ]; then + echo "$2 error : $1" | tee -a ../hyprland_setup_log + exit 1 + fi +} + +update_system() { + log "Update xbps package manager" + sudo xbps-install -u xbps + + if [ $UPDATE_PKGS = true ]; then + sudo xbps-install -Syu + check "$?" "Update xbps/system" + log "xbps/system updated" + else + log "Skipping full system update" + fi +} + +clear_pkgs_cache() { + if [ $CLEAR_CACHE = true ]; then + log "Clear package manager cache" + sudo xbps-remove -yO + sudo xbps-remove -yo + sudo vkpurge rm all + log "Package manager cache cleared" + else + log "Skipping package manager cache clearance" + fi +} + +pkgs_installer() { + local log_message=$1 + shift + local -a package_list=("$@") + + log "$log_message" + sudo xbps-install -Sy "${package_list[@]}" + check "$?" "$log_message" +} + +install_pkgs() { + for package_set in $(echo "${!PACKAGES[@]}" | tr ' ' '\n' | sort); do + pkgs_installer "Install $package_set" ${PACKAGES["$package_set"]} + log "$package_set installed" + done +} + +add_user_to_groups() { + log "Add user to needed groups" + sudo usermod -a $USER -G _seatd + sudo usermod -a $USER -G bluetooth + check "$?" "Add user to needed groups" + log "User added to needed groups" +} + +enable_services() { + log "Enable services" + + local services=( + "/etc/sv/dbus" + "/etc/sv/seatd" + "/etc/sv/elogind" + "/etc/sv/NetworkManager" + "/etc/sv/polkitd" + "/etc/sv/bluetoothd" + ) + + for service in "${services[@]}"; do + if [ -d "$service" ]; then + echo "Service $service already exists, skipping" + else + sudo ln -s "$service" /var/service + check "$?" "Enable service: $service" + echo "Service $service enabled" + fi + done + + log "Services enabled" +} + +disable_grub_menu() { + if [ $DISABLE_GRUB_MENU = true ]; then + log "Disable grub menu" + echo 'GRUB_TIMEOUT=0' | sudo tee -a /etc/default/grub + echo 'GRUB_TIMEOUT_STYLE=hidden' | sudo tee -a /etc/default/grub + echo 'GRUB_CMDLINE_LINUX_DEFAULT="loglevel=1 quiet splash"' | sudo tee -a /etc/default/grub + sudo update-grub + check "$?" "Disable grub menu" + log "Grub menu disabled" + else + log "Skipping grub menu disable" + fi +} + +check_sudo +update_system +clear_pkgs_cache +install_pkgs +add_user_to_groups +enable_services +disable_grub_menu + +log "Setup is done, please log out and log in"