It uses the following:
- Window Manager: i3
- Linux terminal: terminator/kitty/tilix
- Editor: vim/neovim + plugins
- Shell: zsh + oh-my-zsh
Check this for some Ansible Playbooks you can use to install all the utilities.
Playbooks that you should run:
- base_utils.yml
- i3wm.yml
# Install Utilities
sudo apt-get update
sudo apt install -y imagemagick tree curl wget git unzip apt-file mc curl \
exuberant-ctags ack-grep silversearcher-ag ripgrep golang ca-certificates \
gnupg traceroute net-tools salt-minion
# npm
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update && sudo apt-get install nodejs -y
# Install i3 Window Manager
sudo apt install -y i3 i3blocks i3lock i3lock-fancy i3status xautolock conky feh rofi \
gnome-control-center gnome-screensaver scrot pulseaudio-utils xbacklight
# Install zsh
sudo apt install -y zsh zsh-syntax-highlighting ttf-ancient-fonts fonts-powerline fonts-font-awesome
# Install terminal emulators
sudo apt install -y terminator tilix tmux
# tilix VTE: https://gnunn1.github.io/tilix-web/manual/vteconfig/
sudo ln -s /etc/profile.d/vte-2.91.sh /etc/profile.d/vte.sh
# Install Vim and plugin dependencies
sudo apt install -y vim
sudo apt install -y python3-pip exuberant-ctags ack-grep silversearcher-ag
## Install neovim
sudo apt install -y neovim
# Install the following linters/fixers
pip install --user pynvim flake8 pylint isort yamllint ansible-lint jedi \
autopep8 yapf docformatter proselint saws autorandr virtualenvwrapper pre-commit
sudo npm install --global eslint eslint-plugin-vue yarn
# Terraform tflint
# https://github.com/terraform-linters/tflint
curl -L "$(curl -Ls https://api.github.com/repos/terraform-linters/tflint/releases/latest | grep -o -E "https://.+?_linux_amd64.zip")" -o tflint.zip && unzip tflint.zip && rm tflint.zip
sudo mv tflint /usr/local/bin
# Install kubectl
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
The following method describes how you can use Git to keep track of your dotfiles.
git init --bare $HOME/.dotfiles
alias gitdotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
gitdotfiles config --local status.showUntrackedFiles no
echo "alias gitdotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
# oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# oh-my-zsh bullet-train theme
cd ~/.oh-my-zsh/themes/
curl -O https://raw.githubusercontent.com/caiogondim/bullet-train-oh-my-zsh-theme/master/bullet-train.zsh-theme
cd
# oh-my-zsh powerlevel10k theme
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
# zsh-autosuggestions plugin
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
chsh -s $(which zsh)
cd
alias gitdotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
echo ".dotfiles" >> $HOME/.gitignore
git clone --bare https://github.com/bcochofel/dotfiles.git $HOME/.dotfiles
alias gitdotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
mkdir -p ~/.config-backup
gitdotfiles checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} ~/.config-backup/{}
gitdotfiles checkout
gitdotfiles config --local status.showUntrackedFiles no
gitdotfiles status
# update ttf fonts cache
fc-cache -f -v
# choose default terminal
sudo update-alternatives --set x-terminal-emulator /usr/bin/terminator
# install tmux plugins
tmux start-server
tmux new-session -d
~/.tmux/plugins/tpm/scripts/install_plugins.sh
tmux kill-server
# kubectx and kubens
mkdir -p ~/.oh-my-zsh/completions
chmod -R 755 ~/.oh-my-zsh/completions
ln -s ~/bin/kubectx.zsh ~/.oh-my-zsh/completions/_kubectx.zsh
ln -s ~/bin/kubens.zsh ~/.oh-my-zsh/completions/_kubens.zsh
# create symbolic link for neovim config
mkdir -p ~/.config/nvim
ln -s ~/.vimrc ~/.config/nvim/init.vim
To configure Gnome Keyring
for i3 follow this
- NERDCommenter: Comment functions so powerful—no comment necessary.
- NERDTree: a file system explorer for the Vim editor.
- NERDTree-GIT: A plugin of NERDTree showing git status flags.
- Vista.vim: Viewer and finder for LSP symbols and tabs
- Tagbar: a class outline viewer for Vim
- Dependencies: sudo apt install exuberant-ctags
- FZF: A command-line fuzzy finder.
- CtrlP: Full path fuzzy file, buffer, mru, tag, ... finder for Vim.
- Vim-Indent: Indent Guides is a plugin for visually displaying indent levels in Vim.
- SuperTab: vim plugin which allows you to use Tab for all your insert completion needs (:help ins-completion).
- Ack: Run your favorite search tool from Vim, with an enhanced results list.
- Dependencies: sudo apt install ack-grep
- Vim-easy-alin: A simple, easy-to-use Vim alignment plugin.
- tabular: Vim script for text filtering and alignment
- vim-gutentags: A Vim plugin that manages your tag files
- vim-repeat: repeat.vim: enable repeating supported plugin maps with "."
- vim-swoop: It allows you to find and replace occurrences in many buffers being aware of the context.
- vim-mark: Highlight several words in different colors simultaneously.
- vim-tmux-navigator: Seamless navigation between tmux panes and vim splits
- vim-polyglot: A solid language pack for Vim.
- Neomake: Asynchronous linting and make framework for Neovim/Vim
- Dependencies: pip install pylint yamllint ansible-lint flake8
- auto-pairs: Insert or delete brackets, parens, quotes in pair.
- Syntastic: Syntax checking hacks for vim
- Dependencies: pip install yamllint ansible-lint
- ALE: Check syntax in Vim asynchronously and fix files
- Deoplete: Dark powered asynchronous completion framework for neovim/Vim8
- Dependencies: pip install pynvim
- Deoplete-jedi: deoplete.nvim source for Python
- Dependencies: pip install jedi
- Neoformat: A (Neo)vim plugin for formatting code.
- Dependencies: pip install autopep8 yapf docformatter
- jedi-vim: jedi-vim - awesome Python autocompletion with VIM
- vim-terraform: basic vim/terraform integration
- Depends: terraform binary