#!/bin/bash # ======================================= # Helper functions # ======================================= # Ask a question and return true or false based on the users input ask() { # from https://djm.me/ask local prompt default reply while true; do if [ "${2:-}" = "Y" ]; then prompt="Y/n" default=Y elif [ "${2:-}" = "N" ]; then prompt="y/N" default=N else prompt="y/n" default= fi echo -n "$1 [$prompt] " read reply ~/.custom # system fixes echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system mkdir -p ~/Pictures/Screenshots } # Installs the dependencies on Arch Linux function install_dependencies { fileToList dependencies/pacman.txt | xargs sudo pacman --noconfirm --force -S install_trizen fileToList dependencies/aur.txt | xargs trizen --force -S --noconfirm fileToList dependencies/pip.txt | xargs sudo pip install } # ======================================= # User output functions # ======================================= # list the dependencies file function list_dependencies { echo "" echo "==========================" echo "" cat dependencies/pacman.txt cat dependencies/aur.txt cat dependencies/pip.txt echo "" echo "==========================" echo "" } # Run the intro bit function intro { echo "___ ___ _ _ _ _ _ " echo "| \/ | | | (_) | | | | ( )" echo "| . . | __ _ ___| |_ ___ _ __ _ __ ___ _ _ __ __| |___| |__ |/ " echo "| |\/| |/ _\` / __| __/ _ \ '__| '_ \` _ \| | '_ \ / _' |_ / '_ \ " echo "| | | | (_| \__ \ || __/ | | | | | | | | | | | (_| |/ /| | | | " echo "\_| |_/\__,_|___/\__\___|_| |_| |_| |_|_|_| |_|\__,_/___|_| |_| " echo " " echo " " echo " __ _ _ " echo " / _(_) ___ (_) " echo " ___ ___ _ __ | |_ _ __ _ ( _ ) _ __ _ ___ ___ " echo " / __/ _ \| '_ \| _| |/ _\` | / _ \/\ | '__| |/ __/ _ \ " echo "| (_| (_) | | | | | | | (_| | | (_> < | | | | (_| __/ " echo " \___\___/|_| |_|_| |_|\__, | \___/\/ |_| |_|\___\___| " echo " __/ | " echo " |___/ " echo "" } function computer { echo " /\ " echo " / \ " echo " /_ %%==O=% _____________ " echo " % - -% | '\\\\\\\\\\" echo " _____c% > __ | ' ____|_ " echo " (_|. . % \` % .' | + '||:::::: " echo " ||. ___)%%%%_.' | '||_____| " echo " ||.( \ ~ / ,)' \'_______|_____| " echo " || /| \'/ |\ ___/____|___\___ " echo " _,,,;!___*_____\_| _ ' <<<:| " echo " / /| |_________'___o_o| " echo " /_____/ / " echo " |:____|/ \"Boy, I LOVE this stuff\". " echo "" echo "" } # ======================================= # Main loop # ======================================= clear # Run the intro function intro ask "Do you want to continue installing my config and rice?" Y && # Ask for dependency installation list_dependencies if ask "Do you want to install the list of applications above? (might prompt for password)" Y; then install_dependencies fi # Ask for config installation if ask "Do you want to install the config files?" Y; then install_config fi # Ask for font installation if ask "Do you want to install the fonts?" Y; then install_fonts fi # ask to enable gdm if ask "Do you want to enable GDM?" Y; then sudo systemctl enable gdm.service fi clear computer # ask for pc specific install prompt=`echo $'\n> ' Please select a specific computer to install or q to finish the install` PS3="$prompt: " select opt in "$PWD/computers"/*; do if (( REPLY == "q" )) ; then break elif (( REPLY > 0 )) ; then bash "$opt/install.sh" break else echo "Invalid option. Try another one." fi done clear echo "Enjoy using my rice! Do not forget to select i3 in GDM :)"