236 lines
4.5 KiB
Bash
Executable file
236 lines
4.5 KiB
Bash
Executable file
#!/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/bash/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/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 "<?xml version=\"1.0\"?>
|
|
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
|
<mime-type type=\"text/plain\">
|
|
<glob pattern=\"*.md\"/>
|
|
<glob pattern=\"*.mkd\"/>
|
|
<glob pattern=\"*.markdown\"/>
|
|
</mime-type>
|
|
</mime-info>" > ~/.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
|
|
|
|
# }}}
|