#!/bin/bash scripts_PATH=$1/arch-automated-installer username=$(whoami) home_PATH=/home/$username echo -e "\n\n\n\n" echo "" echo "====================" echo " Arch Desktop Setup " echo "====================" echo "" sudo pacman -Syu while true; do read -p "Enter a dotfiles repository (enter to skip): " repo if [[ ! -z $repo ]]; then if [[ ! -f /bin/git ]]; then echo "Authentication Is Required. Enter $username's password" sudo pacman -S --noconfirm --needed git echo "" fi if [[ ! -d $home_PATH/Repos ]]; then mkdir $home_PATH/Repos fi git clone $repo $home_PATH/Repos/dotfiles if [[ $? == 0 ]]; then for file in $home_PATH/Repos/dotfiles/*; do ln -s $file $home_PATH/.config/ done break else echo -e "\n\n\n" while true; do read -p "Could not find repository. Try again? (y/n): " response if [[ "${response,,}" == "y" ]]; then redo="${response,,}" break elif [[ "${response,,}" == "n" ]]; then redo="${response,,}" break else echo "Invalid Response (y/n)" fi done if [[ $redo == "n" ]]; then break fi fi else break fi done echo -e "\n\n\n\n" echo "" echo "==================" echo " Install Packages " echo "==================" echo "" sudo pacman -S --noconfirm --needed base-devel while IFS= read -r line ; do sudo pacman -S --noconfirm --needed $line done < $scripts_PATH/arch-assets/archpkg.txt echo -e "\n\n\n\n" echo "" echo "==================" echo " Setup Essentials " echo "==================" echo "" # Setup Firewall echo "Setup UFW" echo "" sudo ufw default deny incoming sudo ufw default allow outgoing # Allow SSH on Default port sudo ufw allow 22 # Allow SSH on Alternate Port echo "" read -p "Would you like to set an alternate SSH port? (Empty to skip) " sshPort if [[ ! -z $sshPort && $sshPort =~ ^[0-9]+$ ]]; then sudo ufw allow $sshPort fi sudo ufw enable # Enable Printer systemctl enable --now cups # Enable SSH systemctl enable --now sshd # Enable Bluetooth systemctl enable --now bluetooth # Setup Yay while true;do read -p "Do you want to install yay? (y/n) " answer if [[ "${answer,,}" == "y" ]]; then if [[ ! -d $home_PATH/Software ]]; then mkdir $home_PATH/Software fi git clone https://aur.archlinux.org/yay.git $home_PATH/Software/yay && cd $home_PATH/Software/yay && makepkg -si --noconfirm --needed && cd break elif [[ "${answer,,}" == "n" ]]; then break else echo "Invalid Response (y/n)" fi done echo -e "\n\n\n\n" echo "" echo "========" echo " Tweaks " echo "========" echo "" # Get JetBrainsMono font while true; do read -p "Do you want to install JetBrainsMono Nerd Font? (y/n):" answer if [[ "${answer}" == "y" ]]; then font_PATH="$home_PATH/.local/share/fonts" if [[ ! -d $font_PATH ]]; then mkdir $font_PATH fi mkdir $font_PATH/JetBrainsMono cd $font_PATH/JetBrainsMono wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz echo "" tar -xvf "JetBrainsMono.tar.xz" cd "" echo "" break elif [[ "${answer}" == "n" ]]; then echo "Skipping JetBrainsMono Nerd Font Install" break else echo "Invalid Response (y/n)" fi done # Setting up lockscreen systemctl enable --now betterlockscreen@$username # Setting up my bash echo -ne " source .config/bash/my_bashrc.sh" >> $home_PATH/.bashrc echo -e "\n\n\n\n" echo "" echo "==================" echo " Gaming Setup " echo "==================" echo "" while true; do read -p "Do you want to install the Gaming Setup? (y/n) " answer if [[ "${answer,,}" == "y" ]]; then argument="$scripts_PATH/arch-assets/archgamingpkg.txt" bash $scripts_PATH/scripts/archgamingsetup.sh $argument break elif [[ "${answer,,}" == "n" ]]; then break else echo "Invalid Response (y/n)" fi done echo -e "\n\n\n\n" echo "" echo "=================" echo " Game Dev Apps " echo "=================" echo "" while true; do read -p "Do you want to install the Gaming Development Setup? (y/n) " answer if [[ "${answer,,}" == "y" ]]; then argument="$scripts_PATH/arch-assets/archgamedevpkg.txt" bash $scripts_PATH/scripts/archgamedevsetup.sh $argument break elif [[ "${answer,,}" == "n" ]]; then break else echo "Invalid Response (y/n)" fi done echo -ne " Script ran successfully. Please take a look at the 'tweaks' section in the README for further instruction on certain things you might have to enable or do to get things to run perfectly. "