#!/bin/bash NAME="waldek" EMAIL="waldek@mailbox.org" DEPENDENCIES_APT="zsh git tig tmux vim-nox htop python3 python3-pip" DEPENDENCIES_PIP="xonsh" SOURCES_DIR=~/sources/gitea_irisib BOOTSTRAP_DIR=~/sources/gitea_irisib/bootstrap CUSTOM_ZSHRC=$BOOTSTRAP_DIR/custom.zsh CUSTOM_ENV=$BOOTSTRAP_DIR/env.sh if [[ -z $(groups | grep sudo) ]]; then echo "you need to be in the sudo group to run this script..." exit 1 else echo "all good! let's setup your system" fi function install_apt_dependencies () { sudo apt-get update > /dev/null && echo "cache updated" for pgm in $DEPENDENCIES_APT; do sudo apt-get install -y $pgm > /dev/null && echo "$pgm installed" done echo "--- ${FUNCNAME[0]} done" } function setup_sources_dir () { local dst=$SOURCES_DIR if ! [[ -d $dst ]]; then mkdir -p $dst && echo "created $dst directory" else echo "$dst exists already" fi echo "--- ${FUNCNAME[0]} done" } function setup_global_git_config () { content=$(cat << EOF \n [user]\n \tname = $NAME\n \temail = $EMAIL\n [filter "lfs"]\n \tclean = git-lfs clean -- %f\n \tsmudge = git-lfs smudge -- %f\n \tprocess = git-lfs filter-process\n \trequired = true\n [pull]\n \trebase = false\n EOF ) echo -e $content > ~/.gitconfig echo "--- ${FUNCNAME[0]} done" } function clone_bootstrap_to_sources_dir () { local dst=$BOOTSTRAP_DIR if ! [[ -d $dst ]]; then git clone ssh://gitea@86thumbs.net:3022/waldek/bootstrap.git $dst && echo "cloned bootstrap dir" else cd $dst git pull && echo "updated $dst" cd - fi echo "--- ${FUNCNAME[0]} done" } function install_oh_my_zsh () { local dst=~/.oh-my-zsh if ! [[ -d $dst ]]; then git clone https://github.com/robbyrussell/oh-my-zsh.git $dst cp $dst/templates/zshrc.zsh-template ~/.zshrc else cd $dst git pull && echo "updated $dst" cd - fi echo "--- ${FUNCNAME[0]} done" } function customize_oh_my_zsh () { if [[ -z $(grep $CUSTOM_ZSHRC ~/.zshrc) ]]; then echo "source $CUSTOM_ZSHRC" >> ~/.zshrc && echo "appended $CUSTOM_ZSHRC to zshrc" fi if [[ -z $(grep $CUSTOM_ENV ~/.zshrc) ]]; then echo "source $CUSTOM_ENV" >> ~/.zshrc && echo "appended $CUSTOM_ENV to zshrc" fi echo "--- ${FUNCNAME[0]} done" } function clone_and_setup_vimrc () { local dst=$SOURCES_DIR/vimrc if ! [[ -d $dst ]]; then git clone ssh://gitea@86thumbs.net:3022/waldek/vimrc.git $dst && echo "cloned bootstrap dir" ln -s $dst/main.vimrc ~/.vimrc git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim vim +VundleInstall +qall else cd $dst git pull && echo "updated $dst" cd - vim +VundleUpdate +qall fi echo "--- ${FUNCNAME[0]} done" } function symlink_config_files () { mkdir -p ~/.config/htop local dst=~/.config/htop/htoprc if ! [[ -L $dst ]]; then rm $dst 2> /dev/null ln -s $(ls $BOOTSTRAP_DIR/htoprc) $dst fi local dst=~/.xonshrc if ! [[ -L $dst ]]; then rm $dst 2> /dev/null ln -s $(ls $BOOTSTRAP_DIR/xonshrc) $dst fi echo "--- ${FUNCNAME[0]} done" } function install_pip_dependencies () { for dep in $DEPENDENCIES_PIP; do sudo pip3 install --upgrade $dep > $LOG && echo "installed $dep" done } function main () { install_apt_dependencies install_pip_dependencies setup_sources_dir setup_global_git_config clone_bootstrap_to_sources_dir install_oh_my_zsh customize_oh_my_zsh clone_and_setup_vimrc symlink_config_files } main