#!/bin/bash # This script sets up the configuration from this repository DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" APT=`command -v apt` DNF=`command -v dnf` function update_pkg_repos() { if [[ -n "$APT" ]]; then sudo apt update fi } function check_or_install() { CMD=`command -v $1` PKG=$2 if [[ -z "$CMD" ]]; then if [[ -n "$APT" ]]; then sudo apt install -y $PKG elif [[ -n "$DNF" ]]; then sudo dnf install -y $PKG fi fi } function install_build_tools() { if [[ "${APT}x" == "x" ]]; then # This is not Debian return fi echo "Installing build tools..." check_or_install gcc build-essential } function setup_neovim() { # Set up Neovim if [[ -d "$HOME/.config/nvim" ]]; then echo "Neovim already installed, skipping setup" return fi echo "Setting up neovim..." check_or_install nvim "neovim python3-neovim python3-jedi python3-flake8 python3-mypy flake8 mypy" cd $HOME/.config ln -s $DIR/nvim curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim nvim --headless +PlugInstall +qa nvim +UpdateRemotePlugins +qa } function setup_git() { # Set up Git if [[ -f "$HOME/.gitconfig" ]]; then echo "Git already installed, skipping" return fi echo "Setting up git..." check_or_install git git git config --global alias.co checkout git config --global alias.ci "commit -a" git config --global alias.st status git config --global alias.br "checkout -b" git config --global alias.rv "reset --hard HEAD" git config --global alias.pum "pull upstream master" git config --global alias.pom "push origin master" git config --global alias.rbm "rebase master" git config --global alias.last "log -1 HEAD" git config --global alias.unstage "reset HEAD --" git config --global alias.uncommit "reset --soft HEAD^" git config --global alias.changelog "!_() { t=\$(git describe --abbrev=0 --tags); git log \${t}..HEAD --no-merges --pretty=format:'* %s'; }; _" git config --global pull.rebase false } function setup_zsh() { # Set up ZSH if [[ -d "$HOME/.zprezto" ]]; then echo "Prezto already installed, skipping" return fi echo "Setting up zsh..." check_or_install zsh zsh git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" zsh -c 'setopt EXTENDED_GLOB; for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do if [[ -f "${ZDOTDIR:-$HOME}/.${rcfile:t}" ]]; then mv "${ZDOTDIR:-$HOME}/.${rcfile:t}" "${ZDOTDIR:-$HOME}/.${rcfile:t}.orig"; fi; done' zsh -c 'setopt EXTENDED_GLOB; for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"; done' cd $HOME patch -p0 < $DIR/zsh/prezto.diff if [[ `getent passwd $USER | awk -F: '{print $NF}'` != "/bin/zsh" ]]; then chsh -s /bin/zsh fi } function setup_topydo() { # Set up topydo if [[ -d "$HOME/.topydo" ]]; then return fi echo "Set up topydo (as 'todo')..." check_or_install virtualenv "virtualenv python3-virtualenv" cd $HOME/.config ln -s $DIR/topydo virtualenv -p python3 $HOME/.topydo $HOME/.topydo/bin/pip install topydo $HOME/.topydo/bin/pip install 'topydo[prompt]' $HOME/.topydo/bin/pip install 'topydo[columns]' cd $HOME/bin ln -s $HOME/.topydo/bin/topydo ln -s $HOME/.topydo/bin/topydo todo } # Set up a generic bin directory for scripts and tools mkdir -p $HOME/bin mkdir -p $HOME/.config update_pkg_repos install_build_tools setup_neovim setup_git setup_zsh # Not used anymore # setup_topydo