Portable development environment configuration.
This repo uses GNU Stow to manage symlinks. Each top-level directory is a "package" that mirrors the structure of your home directory. When you run stow <package>, it creates symlinks from your home directory to the files in that package.
~/dotfiles/starship/.config/starship.toml → ~/.config/starship.toml
~/dotfiles/zsh/.zshrc → ~/.zshrc
Stow figures out the target path by removing the package name prefix. This keeps configs organized and version-controlled while your system sees them in the expected locations.
git clone https://github.com/YOUR_USERNAME/dotfiles.git ~/dotfiles
cd ~/dotfiles
chmod +x install.sh
./install.sh- Zsh: Shell config with vi mode, history, and modular config files
- Neovim: Editor config with LSP, Treesitter, and Twenty theme
- Ghostty: Terminal config with Twenty theme (hacker edition)
- Starship: Fast shell prompt with Twenty theme
- Tmux: Terminal multiplexer with vim-style navigation
- Git: Global git configuration
dotfiles/
├── ghostty/ # Ghostty terminal → ~/.config/
│ └── .config/
│ └── ghostty/
│ ├── config
│ └── themes/
│ ├── twenty.ghostty
│ └── twenty-dark
├── neovim/ # Neovim → ~/.config/
│ └── .config/
│ └── nvim/
│ ├── init.lua
│ └── colors/
│ └── twenty.lua
├── starship/ # Starship prompt → ~/.config/
│ └── .config/
│ └── starship.toml
├── zsh/ # Zsh configs → ~/
│ ├── .zshrc
│ ├── .zsh_plugins.txt
│ └── .zsh/
├── tmux/ # Tmux config → ~/
│ └── .tmux.conf
├── git/ # Git config → ~/
│ └── .gitconfig
├── brew.txt # Homebrew packages
├── stow-all.sh # Stow all packages
└── install.sh # Setup script
If you don't want to use the install script:
# Install dependencies
brew install stow antidote starship
# Link configs (run from dotfiles directory)
./stow-all.sh
# Install tmux plugin manager
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmAPI keys and secrets should go in ~/.zsh_secrets (gitignored):
cp zsh/.zsh_secrets.example ~/.zsh_secrets
# Edit and add your secrets- Git: Update
git/.gitconfigwith your email - Zsh: Add machine-specific configs to
zsh/.zsh/work.zsh - Aliases: Add custom aliases to
zsh/.zsh/aliases.zsh - Functions: Add custom functions to
zsh/.zsh/functions.zsh
cd ~/dotfiles
git pull
./stow-all.sh # Restow every packagecd ~/dotfiles
./stow-all.sh -D # Remove all symlinks