#!/bin/bash ## Script to automate the setting up of my working environment. ## flyingscorpio RED=$(tput setaf 1) GREEN=$(tput setaf 2) ORANGE=$(tput setaf 3) NC=$(tput sgr0) export RED export GREEN export ORANGE export NC separator() { exit_status=$? if [ $exit_status -eq 0 ]; then echo -n "${GREEN}" else echo -n "${RED}" fi echo "========================================" echo "${NC}" } BASE_DIR="$PWD" export BASE_DIR # Define OS {{{ OS='none' os_release=$(cat /etc/os-release*) case ${os_release,,} in *debian* ) OS='debian' echo "You are using Debian" ;; *ubuntu* ) OS='debian' echo "You are using Ubuntu" ;; *arch* ) OS='arch' echo "You are using Arch-Linux" ;; *manjaro* ) OS='arch' echo "You are using Manjaro" ;; * ) echo "${ORANGE}Unable to determine OS${NC}" echo "Which OS are you using?" select OS in 'Debian / Ubuntu' 'Arch / Manjaro'; do case $OS in 'Debian / Ubuntu' ) OS='debian'; break;; 'Arch / Manjaro' ) OS='arch'; break;; esac done echo "Using $OS" esac export OS # }}} # Handle args {{{ OVERWRITE='false' UPDATE='false' if [ "$1" = '-o' ] || [ "$1" = '--overwrite' ] || [ "$2" = '-o' ] || [ "$2" = '--overwrite' ]; then echo "${ORANGE}You agree to overwrite preexisting files!${NC}" OVERWRITE='true' fi if [ "$1" = '-u' ] || [ "$1" = '--update' ] || [ "$2" = '-u' ] || [ "$2" = '--update' ]; then echo "${ORANGE}Set to update plugins!${NC}" UPDATE='true' fi if [ "$1" = '-ou' ] || [ "$1" = '-uo' ]; then echo "${ORANGE}Both options were set.${NC}" OVERWRITE='true' UPDATE='true' fi export OVERWRITE export UPDATE # }}} # Install scripts {{{ echo "Installing scripts..." if [ "$OS" = 'debian' ]; then /bin/bash "$BASE_DIR"/installation_scripts/debian_based_installs.sh elif [ "$OS" = 'arch' ]; then /bin/bash "$BASE_DIR"/installation_scripts/arch_based_installs.sh else echo "${RED} Didn't receive correct OS information, quitting...${NC}" exit 1 fi separator # }}} # Update vim configuration {{{ echo "Setting up configuration for Vim" /bin/bash "$BASE_DIR"/installation_scripts/vim_update.sh separator # }}} # Configure ProtonVPN {{{ echo "Configuring ProtonVPN..." if [ ! -e ~/.pvpn-cli/pvpn-cli.cfg ]; then sudo protonvpn init && sudo protonvpn c --cc CH fi separator # }}} # Update .bashrc {{{ echo "Updating .bashrc..." if [ ! -L ~/.bashrc ]; then ln -rs "$BASE_DIR"/dotfiles/bashrc ~/.bashrc 2> /dev/null fi separator # }}} # Update .bash_aliases {{{ echo "Updating .bash_aliases..." if [ ! -L ~/.bash_aliases ]; then ln -rs "$BASE_DIR"/dotfiles/bash_aliases ~/.bash_aliases 2> /dev/null fi separator # }}} # Configure Git {{{ echo "Configuring Git..." git config --global user.name "$USER@$(uname -n)" git config --global user.email "tfranken@protonmail.com" git config --global alias.ci "commit" git config --global alias.co "checkout" git config --global alias.st "status" git config --global alias.br "branch" separator # }}} # Install Rust {{{ echo "Installing Rust..." if rustc --version; then echo "${GREEN}Rust is already intalled${NC}" if [ "$UPDATE" = 'true' ]; then echo "Updading..." rustup update fi else if curl https://sh.rustup.rs -sSf | sh; then echo "${GREEN}Successfully installed Rust${NC}" else echo "${ORANGE}There was a problem while installing Rust${NC}" fi fi separator # }}} # Clone bash-git-prompt {{{ if [ -e ~/.bash-git-prompt ]; then echo "${GREEN}Found existing bash-git-prompt.${NC}" if [ "$UPDATE" = 'true' ]; then echo "Updating..." cd ~/.bash-git-prompt && git pull fi else echo "${ORANGE}Cloning bash-git-prompt...${NC}" git clone https://github.com/magicmonty/bash-git-prompt.git ~/.bash-git-prompt --depth=1 fi separator # }}} # Add MIME type for reading .md files in Firefox (need to add extension too) {{{ echo "Adding MIME type for .md files in Firefox..." echo "${ORANGE}Remember to install the Firefox extension for it to work${NC}" mkdir -p ~/.local/share/mime/packages echo " " > ~/.local/share/mime/packages/text-markdown.xml update-mime-database ~/.local/share/mime separator # }}} # Clone projects {{{ echo "Cloning projects..." /bin/bash "$BASE_DIR"/installation_scripts/clone_projects.sh separator # }}}