feat: pkgs installer script

This commit is contained in:
hesam-init 2024-03-06 22:51:17 +03:30
parent 6f2f21d092
commit a6159796e9
3 changed files with 135 additions and 121 deletions

View file

@ -1,121 +0,0 @@
#!/bin/bash
# local package install : xbps-install -S --repository <pkg_path> <pkg_fullname>
# 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 )"

View file

@ -6,4 +6,5 @@ install_ttf_font() {
}
cd ../host/ui/fonts
install_ttf_font

134
scripts/pkgs-installer.sh Executable file
View file

@ -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"