dotfiles
This repository contains my personal dotfiles, managed using GNU Stow.
Instead of a custom installation script, configurations are organized into logical "packages". Using stow ensures that all configuration files are cleanly symlinked into your home directory, mirroring the structure inside the package folder.
Requirements
To install Stow on macOS, use Homebrew:
brew install stow
To install Stow on Linux, use your distribution's package manager:
Ubuntu / Debian
sudo apt install stow
Arch Linux
sudo pacman -S stow
Installation
To install a specific package (e.g., nvim), navigate to the root of this repository and run:
stow nvim
To install all standard packages at once, run:
stow bash zsh nvim starship tmux
This will automatically create the necessary symlinks in your $HOME directory pointing to the files in this repository.
Removing a Package
If you want to remove the symlinks for a specific package, use the -D flag:
stow -D nvim
Directory Structure
To keep things modular and easy to manage, each folder acts as a "package" that represents an application or environment. The folder structure inside the package strictly mirrors its target destination relative to the home (~/) directory.
.
├── bash/
│ └── .bashrc # Symlinked to ~/.bashrc
├── nvim/
│ └── .config/
│ └── nvim/ # Symlinked to ~/.config/nvim/
├── starship/
│ └── .config/
│ └── starship.toml # Symlinked to ~/.config/starship.toml
├── tmux/
│ ├── .tmux.conf # Symlinked to ~/.tmux.conf
│ └── .tmux.conf.local # Symlinked to ~/.tmux.conf.local
└── zsh/
└── .zshrc # Symlinked to ~/.zshrc
Adding New Configurations
When you want to add a new tool:
- Create a new directory for it (e.g.,
wezterm). - Replicate the target directory structure inside this new folder (e.g.,
wezterm/.config/wezterm/wezterm.lua). - Run
stow weztermfrom the root of this repository.