This repository contains my personal dotfiles - configuration files for various tools and applications.
Set zsh as your login shell:
chsh -s $(which zsh)Clone this repository to your home directory:
git clone https://github.com/benhigham/dotfiles.git ~/.dotfilesGNU Stow is a symlink farm manager that simplifies dotfile management by automatically creating symlinks based on directory structure.
-
Install Stow:
# On macOS brew install stow # On Debian/Ubuntu sudo apt-get install stow # On Fedora sudo dnf install stow
-
Create target directories (optional):
mkdir -p ~/.configThis ensures stow will only create symlinks within existing directories rather than symlinking entire directories.
-
Deploy the dotfiles:
cd ~/.dotfiles stow .
This will create symlinks from your home directory to the corresponding files in the ~/.dotfiles repository, preserving the same directory structure.
To stow specific configurations only:
# Example: only set up `nvim` configuration stow .config/nvim # Example: set up multiple specific configs stow .vimrc .config/wezterm .config/git
You can set up these dotfiles using symlinks to point from your home directory to the files in this repository:
# Example for manually linking files
ln -s ~/.dotfiles/.vimrc ~/.vimrcThis repository contains configurations for:
Some of the other tools I have configured:
- bat
- Delta
- direnv
- eza
- Fast Node Manager (fnm)
- fd
- fzf
- Lazygit
- lesspipe
- Powerlevel10k
- Starship
- tmux
- Zephyr
- zoxide
Before using these dotfiles, ensure you have the necessary dependencies installed.
brew install zsh git vim neovim wezterm bat git-delta eza fnm fd fzf lazygit lesspipe starship zoxideSome tools require manual installation or alternative sources on Linux. Check the project links above for more detailed documentation.
This repository includes the base Git and Zsh configuration, but certain personal information like your email address or machine-specific environment variables should not be committed to version control.
To configure the user in Git:
-
Create a
.gitconfigfile in the${HOME}directory:touch ~/.gitconfig -
Add your personal Git configuration to this file. For example:
[user] name = Your Name email = [email protected]
-
Git will automatically load this configuration alongside the repository's git config.
To configure personal or machine-specific environment variables for Zsh:
-
Create a
.zshenv.localfile in your Zsh config directory (by default,~/.config/zsh/):mkdir -p ~/.config/zsh touch ~/.config/zsh/.zshenv.local
-
Add your personal environment variables to this file. For example:
export API_KEY="your-api-key-here"
-
This file will be automatically sourced by
.zshenvif it exists.
Note: The .zshenv.local file is ignored by Git and should not be committed to the repository.
To update your dotfiles repository with the latest changes:
cd ~/.dotfiles
git pull
stow . # Re-stow if new files were addedTo remove the symlinks created by stow:
cd ~/.dotfiles
stow -D . # Remove all symlinks
# Or to unstow specific configurations:
stow -D .config/nvimFeel free to fork this repository and customize it to your liking. The configurations are meant to be personalized!
This project is licensed under the MIT License.