Welcome to my dotfiles repository! This contains the configuration files I use for my daily development workflow.
Note
This project is still a work in progress! Use at your own risk.
Note
You need to install the XCode CLI tools for macOS configuration.
xcode-select --installAfter cloning the repository, you can set up the dotfiles using the install.sh script. Run the script with one of the following commands:
./install.sh help
Usage: install.sh {backup|link|homebrew|shell|macos|all}./install.sh backupThis command creates a backup of your current dotfiles (if any) in ~/.dotfiles-backup/. It scans for files that will be symlinked and moves them to the backup directory. It also handles vim/neovim setups, moving related files into the XDG base directory, e.g., ~/.config.
~/.config/nvim/- The home of neovim configuration~/.vim/- The home of vim configuration~/.vimrc- The main init file for vim
./install.sh linkThis command creates symbolic links from the dotfiles directory to your home directory ($HOME). This allows you to keep the configurations in version control while using them in your actual environment.
./install.sh homebrewThis command installs Homebrew (macOS/Linux package manager) by downloading and running the Homebrew installer script. If the script detects you're on Linux, it will use Linuxbrew instead.
Once Homebrew is installed, it runs brew bundle to install the packages listed in the Brewfile.
./install.sh shellThis command sets up your shell configuration. It specifically configures the shell to Zsh using the chsh command.
./install.sh macosThis command applies macOS-specific settings using defaults write commands. It modifies various system preferences, including:
- Show all filename extensions in Finder
- Show hidden files by default
- Set UTF-8 encoding in Terminal.app
- Expand save dialogs by default
- Enable full keyboard access for all controls
- Enable subpixel font rendering on non-Apple LCDs
- Show the Path and Status bars in Finder
- Enable Safari’s debug menu
./install.sh allThis runs all the installation tasks mentioned above (except for backup, which must be run manually).
The prompt for ZSH is configured in the config/zsh/zshrc file and performs the
following operations.
- Sets
EDITORtonvim - Recursively searches the
$DOTFILES/zshdirectory for any.zshfiles and sources them - Sources a
~/.localrc, if available for configuration that is machine-specific and/or should not ever be checked into git - Adds
~/binand$DOTFILES/binto thePATH
To install Neovim, use Homebrew:
brew install neovimHowever, it was likely installed already if you ran the ./install.sh brew
command provided in the dotfiles.
All of the configuration for Neovim starts at config/nvim/init.lua, which is
symlinked into the ~/.config/nvim directory.
Warning
The first time you run nvim with this configuration, it will likely have a
lot of errors. This is because it is dependent on a number of plugins being
installed.
On the first run, all required plugins should automatically installed by lazy.nvim, a plugin manager for neovim.
Note
Plugins can be synced in a headless way from the command line using the vu
alias.
Clone the tmux plugin repo:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmThen install the plugins with the following command:
CTRL^ + IA Dockerfile is provided to help test the dotfiles setup in a Linux environment. To build the Docker image:
docker build -t dotfiles --force-rm .This creates a dotfiles image with the repository cloned. To run the container:
docker run -it --rm dotfilesThis opens a Bash shell in the container, allowing you to test the dotfiles installation process.
I almost exclusively work on macOS, so this list will be specific to that operating system, but several of these reccomendations are also available, cross-platform.
- WezTerm - GPU-accelerated terminal emulator
- Aerospace - Tiling window manager for macOS
- Raycast - MacOS productivity app
- Zsh - Shell
- Oh My Posh - Cross-platform prompt theme engine
- Nerd fonts(I use Cartograph CF and SF Mono Nerd Font as fallback)
- zoxide (Highly recommended)
- Eza -
lsreplacement - bat -
catreplacement - fzf - Interactive filtering
- icalBuddy for MacOS calendar

