This is my personal very opinionated setup. I use the $HOME/.local
directory for any tools I run or try out and the $HOME/.config
folder for configuring them (mostly). You can check out my path in the bash dotfiles folder. Don't hesitate to create an issue or merge request if you use this setup and like to make amendments.
Create the ~/.local/bin
directory. Any tools/self compiled
executables I place here.
sudo apt-get install silversearcher-ag
sudo apt install fzf
curl -sfL https://direnv.net/install.sh | bash
curl https://pyenv.run | bash
git clone git@github.com:shamangeorge/dotfiles ~/.local/dotfiles
ln -svif ~/.local/dotfiles/bash.linux ~/.config/bash
# now setup everything
~/.config/bash/setup.sh
# get oh-my-zsh (change the default shell here or later manually your choice)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# remove the custom zsh directory
rm -rvf ~/.local/.oh-my-zsh.custom
# run the setup script
~/.local/dotfiles/zsh.linux/setup.sh
# at this point we are in an incomplete state so clone in the plugins and themes
# get powerlevel10k (you can configure it if you want but make sure you disable the p10k.zsh symbolic link in the setup script)
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# get zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# get zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# get fzf-zsh-plugin
git clone --depth 1 https://github.com/unixorn/fzf-zsh-plugin.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-zsh-plugin
# get zsh-tfenv (if you use it, you can disable it in zshrc later if you dont)
git clone https://github.com/cda0/zsh-tfenv ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-tfenv
This config should work both for vim and neovim (I use neovim) and update-alternatives to default to it
# setup vim
~/.local/dotfiles/vim/setup.sh
# reset all repos
find . -type d -mindepth 1 -maxdepth 1 -exec git --git-dir={}/.git --work-tree=$PWD/{} reset --hard \;
# update the to master
find . -type d -mindepth 1 -maxdepth 1 -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master \;
- Check out the shamangeorge/.tmux repository for my setup (based on the
gpakosz/.tmux
repository)
ln -svif ~/.local/dotfiles/generic/gitconfig ~/.gitconfig
Check out giconfig for values. Some things used are:
TODO: fallback to diff-so-fancy
gpg config for git
- use gpg2 by default
- sudo update-alternatives --config pinentry (make it so that it uses pinentry-curses and doesnt grab the diplay)
ln -svif ~/.local/dotfiles/generic/rvmrc ~/.rvmrc
Check here
Generic shell agnostic stuff to be used in both bash and zsh or any shell to setup (although its already setup in git as symlinks)
for file in $(\ls shell/*sh); do ln -srfv $file bash.linux/custom/$(echo $(basename $file) | sed -e 's/.sh/.bash/g'); done
for file in $(\ls shell/*sh); do ln -srfv $file bash.linux/custom/$(echo $(basename $file) | sed -e 's/.sh/.zsh/g'); done