#!/bin/bash ## flyingscorpio ## Script to automate the setting up of my working environment. ## Uncomment the function calls you wish to run. # Set up {{{ RED=$(tput setaf 1) GREEN=$(tput setaf 2) ORANGE=$(tput setaf 3) NC=$(tput sgr0) export RED export GREEN export ORANGE export NC BASE_DIR="$PWD" export BASE_DIR GITHUB_DOTFILES=~/github_dotfiles export GITHUB_DOTFILES separator() { exit_status=$? if [ $exit_status -eq 0 ]; then echo -n "${GREEN}" else echo -n "${RED}" fi echo "========================================" echo "${NC}" } # }}} # 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' case "$1" in -o | --overwrite ) echo "${ORANGE}You agree to overwrite preexisting files!${NC}" OVERWRITE='true' ;; -u | --update ) echo "${ORANGE}Set to update plugins!${NC}" UPDATE='true' ;; -ou | -uo ) echo "${ORANGE}Both options were set.${NC}" OVERWRITE='true' UPDATE='true' ;; * ) echo "Din't understand arguments" exit 1 esac if [ "$#" -eq 2 ]; then case "$2" in -o | --overwrite ) echo "${ORANGE}You agree to overwrite preexisting files!${NC}" OVERWRITE='true' ;; -u | --update ) echo "${ORANGE}Set to update plugins!${NC}" UPDATE='true' ;; * ) echo "Din't understand arguments" exit 1 esac 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 } # }}} install_scripts update_vim() { # {{{ # Update vim configuration echo "Setting up configuration for Vim..." /bin/bash "$BASE_DIR"/installation_scripts/vim.sh separator } # }}} update_vim setup_sddm() { # {{{ # Update sddm echo "Setting up SDDM..." /bin/bash "$BASE_DIR"/installation_scripts/sddm.sh separator } # }}} setup_sddm update_i3() { # {{{ # Update i3 configuration echo "Setting up i3..." /bin/bash "$BASE_DIR"/installation_scripts/i3.sh separator } # }}} update_i3 configure_protonvpn() { # {{{ # Configure ProtonVPN echo "Configuring ProtonVPN..." sudo protonvpn init && sudo protonvpn c --cc CH separator } # }}} # configure_protonvpn setup_bash_files() { # {{{ # Set up .bashrc echo "Updating .bashrc..." if [ ! -L ~/.bashrc ]; then ln -rs "$BASE_DIR"/dotfiles/bash/bashrc ~/.bashrc 2> /dev/null fi separator # Set up .bash_aliases echo "Updating .bash_aliases..." if [ ! -L ~/.bash_aliases ]; then ln -rs "$BASE_DIR"/dotfiles/bash/bash_aliases ~/.bash_aliases 2> /dev/null fi separator } # }}} setup_bash_files configure_git() { # {{{ # 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 } # }}} configure_git install_rust() { # {{{ # 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 } # }}} install_rust bash_git_prompt() { # {{{ # 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 } # }}} bash_git_prompt markdown_mimetype() { # {{{ # 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 } # }}} markdown_mimetype clone_projects() { # {{{ # Clone projects echo "Cloning projects..." /bin/bash "$BASE_DIR"/installation_scripts/clone_projects.sh separator } # }}} # clone_projects