Proper dotfiles are the very heart of an efficient working environment.
- Terminals: Kitty and tmux
- Shell: Fish
- Editor: NeoVim
- Colorscheme: Catppuccin
- Font: Fira Code from Nerd Fonts
On macOS, Homebrew is the package manager.
Clone this repository and bootstrap your system:
git clone git@github.com:mavam/dotfiles.git ~/.dotfiles
cd .dotfiles
./bootstrap
The bootstrap script will ask you whether you'd like to setup specific components.
The POSIX shell script dots installs (= symlinks) and removes subsets of dotfiles according to your needs. For example, install all dotfiles as follows:
./dots install -a
Alternatively, install only dotfiles selectively, with positional arguments matching names in this repository:
./dots install git gnupg
Similarly, remove all installed dotfiles:
./dots uninstall -a
The installer script does not override existing dotfiles unless the command
line includes the -f
switch. When in doubt what the installation of a subset
of the dotfiles would look like, it is possible to look at the diff first:
./dots diff -a
To add a configuration for an exemplary tool "foo", create a new directory
foo
and add the dotfiles in there, as if foo
is your install prefix
(typically $HOME
). You can "scope" a tool as local by adding a tag-file
foo/LOCAL
. This has the effect of creating a nested configuration directory
in your prefix, instead of symlinking the directory. For example, you may not
want to symlink ~/.gnupg
but only the contained file ~/.gnupg/gpg.conf
.
Without the scope tag gnupg/LOCAL
, you would end up with:
~/.gnupg -> dotfiles/gpg/.gnupg
as opposed to:
~/.gnupg (local directory)
~/.gnupg/gpg.conf -> dotfiles/gpg/.gnupg/gpg.conf