#!/usr/bin/env bash # # A script to upgrade existing installations of ArchLabs # # Written by Nathaniel Maia # REPO=' [archlabs_repo] Server = https://archlabs.github.io/archlabs_repo/$arch Server = https://downloads.sourceforge.net/project/archlabs-repo/archlabs_repo/$arch' KEYS=('AEFB411B072836CD48FF0381AE252C284B5DBA5D' '9E4F11C6A072942A7B3FD3B0B81EB14A09A25EB0' '35F52A02854DCCAEC9DD5CC410443C7F54B00041') yes="y" no="n" cur_wm=$(wmctrl -m | grep Name | cut -d " " -f2) # Loop until network connection is solid while ! [[ $net >/dev/null ]]; do net=$(ping -c1 8.8.8.8 2>&1) echo -e "Please Connect to a Network Before Continuing" clear; sleep 1 done setupKeyring() { clear; echo "############################################################################################ ######## Setting up keyring & Adding repo to pacman.conf ######### ############################################################################################" sleep 2 # import each key and populate the keyring sudo pacman-key --init sudo pacman-key --populate archlinux for key in "${KEYS[@]}"; do if ! sudo pacman-key --list-keys | grep $key; then gpg --receive-keys $key sudo pacman-key -r $key fi done # add $REPO to pacman.conf if ! grep "archlabs_repo" /etc/pacman.conf; then echo "$REPO" | sudo tee -a /etc/pacman.conf else sudo sed -i '/archlabs_repo/d' /etc/pacman.conf echo "$REPO" | sudo tee -a /etc/pacman.conf fi # finish populating the keyrings sudo pacman -S archlabs-keyring --needed --noconfirm sudo pacman-key --populate archlabs } backupConfigs() { clear echo "############################################################################################ ######## Backing up configs to /home/$USER/Downloads/$USER-config-backup.tar.gz ######### ############################################################################################" # Backup configs to $HOME/Downloads/ if backup doesn't exist already if ! [ -e "$HOME/Downloads/$USER-config-backup.tar.gz" ]; then tar czvf "$HOME/Downloads/$USER-config-backup.tar.gz" "$HOME"/.{config,Xresources,zshrc,bashrc,icons,xsession,xsessionrc,xinitrc} > /dev/null 2>&1 else echo "[WARNING] Backup already exists... Not overwriting" sleep 2 fi } setupConfigs() { clear echo "############################################################################################ ######## Setting up new configs ######### ############################################################################################" sleep 2 # get rid of old leftover configs/scripts rm -rf "$HOME"/.config/{bspwm,dunst,i3,obmenu-generator,qt5ct,Thunar,conky,geany,neofetch,polybar,termite,xfce4,openbox} sudo rm -rf /etc/skel/* # Copy configs to /etc/skel/ & $HOME sudo cp -rf "$PWD"/home/{bin,.ArchLabs-homepage,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} /etc/skel/ sudo cp -rf "$PWD"/etc / cp -rf /etc/skel/{bin,.ArchLabs-homepage,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} "$HOME"/ } # first setupKeyring setupKeyring # ask to setup configs clear printf "\nThis step will get the latest configs for polybar, tint2, openbox, i3, etc. \n\nYour existing configs will be backed up to an archive located at: \n\t$HOME/Downloads/$USER-config-backup.tar.gz\n\n\n\nDo you want to continue? [y/N]:" read -r answer if [ "${answer,,}" = "${yes,,}" ]; then # backup configs before continuing backupConfigs # setupConfigs only if a backup was made if [ -e "$HOME/Downloads/$USER-config-backup.tar.gz" ]; then setupConfigs fi # finish up by running setup then reloading everything $HOME/.config/setup if [[ $cur_wm == i3 ]]; then i3-msg restart else $HOME/.config/polybar/scripts/launch-polybar --reload > /dev/null 2>&1 fi else sudo rm -rf /etc/skel/* sudo cp -rf "$PWD"/home/{bin,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} /etc/skel/ sudo cp -rf "$PWD"/etc / fi clear echo "############################################################################################ ######## Setup Successfully Completed ######### ############################################################################################" exit 0