This is where I keep my dotfiles. The setup is intended to be portable across all my devices, and manages the following:
- alacritty
- claude
- git
- nvim (see nvim/README.md)
- zellij
- zsh
Install from the releases page.
Download and install Iosevka Nerd Font
Create ~/.gitconfig.local with your email address for this device:
[user]
email = you@example.com
Install from the releases page.
Make sure $HOME/.local/bin is on your PATH.
Install from the releases page.
Install GNU Stow by downloading and building from source:
curl -O https://ftp.gnu.org/gnu/stow/stow-2.4.1.tar.gz
tar xzf stow-2.4.1.tar.gz
cd stow-2.4.1
./configure --prefix="$HOME/.local"
make install
cd ..
rm -rf stow-2.4.1 stow-2.4.1.tar.gzInstall from the releases page.
Run the following command from the root of this repo to symlink the config into the right places:
stow --target="$HOME" alacritty claude git nvim zellij zsh- Create a top-level directory for the tool (e.g.
mytool/) - Inside it, mirror the path where the config should live relative to
$HOME. For example, if the config belongs at~/.config/mytool/config.toml, createmytool/.config/mytool/config.toml - Add the new directory name to the
stowcommand and re-run it:
stow --target="$HOME" alacritty claude git mytool nvim zellij zshStow will create a symlink from $HOME/.config/mytool/config.toml to the file in
this repo.
The relationships between the files in this project and their targets on the host machine are:
alacritty/
.config/alacritty/
alacritty.toml $HOME/.config/alacritty/alacritty.toml
dracula.toml $HOME/.config/alacritty/dracula.toml
claude/
.claude/
settings.json $HOME/.claude/settings.json
statusline-command.sh $HOME/.claude/statusline-command.sh
git/
.gitconfig $HOME/.gitconfig
nvim/
.config/nvim/ $HOME/.config/nvim/
zellij/
.config/zellij/
config.kdl $HOME/.config/zellij/config.kdl
zsh/
.zshrc $HOME/.zshrc
.config/zsh/prompt/
prompt_setup $HOME/.config/zsh/prompt/prompt_setup
This repo exists to keep environments consistent across machines, make new setups reproducible, and provide a checkpoint to roll back to if something breaks.
GNU Stow manages the symlinks. It's simple: it mirrors a directory tree into a target directory, which is all that's needed here.
The tools are chosen for being cross-platform and keyboard-driven:
- Neovim - keyboard-driven editor with a broad plugin ecosystem
- Zellij - terminal multiplexer; chosen over Tmux as a more modern alternative
- Alacritty - minimal terminal emulator
- Zsh - default shell on macOS