arch-automated-installer/archsetup.sh

202 lines
4.9 KiB
Bash
Executable file

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