Storing and managing dotfiles
Use git to store and manage dotfiles like .vimrc
, .bashrc
and .tmux.conf
. Documents the
process outlined here with minor changes and
updates.
The basic idea is that we create a Git repository in the home folder. We won’t use the default
.git
folder in case of conflicts. I’ll use .dotfiles
. We also alias a command so we can update
the dotfiles repo as needed. I use the command dotfiles
as the alias
Create repository to store dotfiles
Create an EMPTY repository somewhere online e.g GitHub.
Add dotfiles to repository
## Create a new empty repo for our dotfiles
git clone --bare https://<dotfiles_repo_link>.git ${HOME}/.dotfiles
## Create an alias dotfiles for dotfiles git commands
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
dotfiles config --local status.showUntrackedFiles no
## Add dotfiles alias to bashrc
echo "alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.bashrc
After this, you should be able to add dotfiles to the repo via something like
dotfiles add .tmux.conf
dotfiles add .vimrc
dotfiles add .bashrc
dotfiles commit -m "Add dotfiles"
dotfiles push -f origin master
Setup dotfiles in a new machine
To setup the stored dotfiles in a new machine
git clone --bare https://<dotfiles_repo_link>.git ${HOME}/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
## This will give you errors if dotfiles already exist on the box so you need to remove them and
## rerun command as required
dotfiles checkout
dotfiles config status.showUntrackedFiles no
You can store these steps as a bash script in GitHub gists and just download and run the script when needed via something like
curl -Lks https://gist.githubusercontent.com/pkharel/436cdd5f0d367b8c0a5d122aa5b3ce07/raw | bash
Notes
It’s helpful to have auto download / auto install scripts in your .vimrc
and .tmux.conf
to make
the process smoother for those applications. For example
.vimrc
" Auto install Plug
let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
if empty(glob(data_dir . '/autoload/plug.vim'))
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
.tmux.conf
## Auto download and install tpm if necessary
if "test ! -d ~/.tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
TL;DR (auto-generated with llama3.2:1b)
📈 🗂️ ⏰ 👥 .dotfiles 🌱 💻 repo & aliases ✨ auto install scripts 💸 🔧 auto download/tmp install 🔩 🎉 TL;DR: Create a dotfiles repo, add aliases, and setup for easy management
The post discusses the process of setting up and managing dotfiles on your
local machine using Git. It provides a step-by-step guide on how to create an
empty repository for dotfiles, add them to the repository, and alias commands
to automate this process. The post also covers how to set up the dotfiles in a
new machine by cloning the repository and configuring the aliases.
Additionally, it suggests adding auto download/install scripts to your .vimrc
and .tmux.conf
files to make the process smoother.