Someone once said:
Show me your dotfiles and I'll tell you who you are.
This is a typical neovim session:
I previously used a bare git repository to manage my dotfiles1 but it became a bit unmanageable with time.
- No more accidental staging of random files that leads to having to mess with git
- Much more structured filesystem, see below
- Removing dotfiles is really easy, just
stow -D <config>
- A
README
, finally - Git gutter, finally
The install
script basically checks the current operating system, selects what modules to install and uses stow to link each folder.
At the moment my dotfiles are split between three modules, as called by stow, which are common
, linux
and mac
, and every module contains software specific configurations:
├── common
│ ├── ack
│ ├── alacritty
│ ├── bc
│ ├── git
│ ├── mpd
│ ├── ncmpcpp
│ ├── nvim
│ ├── ripgrep
│ ├── scripts
│ ├── tmux
│ ├── tmuxinator
│ └── zsh
├── linux
│ ├── xdefaults
│ └── xinit
└── mac
├── espanso
└── karabiner
This allows me to have a main configuration in common
and additional OS specific configurations in linux
or mac
. I use this for zsh
for example, where I have a .zshrc_local
where I set different options for Mac OS and Linux.
Plugins are managed using git submodules inside the corresponding application folder.
My suckless configurations, I'll add them as soon as I'll find a good way to integrate them.