Skip to content

mattdrose/dotfiles

Repository files navigation

Matt Rose's dotfiles

Setup

Clone into your home directory:

cd ~ && git clone https://github.com/mattdrose/dotfiles.git && cd dotfiles

For initial install, run:

bin/dotfiles

Commands

dotfiles

Symlinks all dotfiles from the repo into your home directory. Existing files are backed up with a .old extension. Since files are symlinked (not copied), edits in ~ are reflected back in the repo.

Note: .zshrc and .gitconfig are not symlinked. Instead, dotfiles writes a real file at ~/.zshrc / ~/.gitconfig that sources or includes the repo version. This way, machine-specific tools (e.g. nvm, credential helpers) can append to those files without dirtying the repo.

dotfiles brew

Installs Homebrew (if needed) and all packages defined in the Brewfile, including modern CLI tools like ripgrep, fd, bat, fzf, and eza. Also installs nvm for Node.js version management.

dotfiles symlinks

Creates symlinks for app-specific configs (VS Code settings, Karabiner) into their expected locations.

dotfiles reload

Re-sources all dotfiles in the current shell, picking up any changes without replacing the shell process.

dotfiles macos

Configures macOS system defaults (Finder, Dock, keyboard, trackpad, etc.).

dotfiles default-apps

Configures macOS default app associations from ~/.duti using duti. Run dotfiles brew first to install duti, and run dotfiles first so .duti is symlinked into your home directory.

File Structure

File Purpose
.zshrc Entry point — sources all other dotfiles
.path PATH modifications and tool initialization (Homebrew, nvm, pyenv, bun, etc.)
.exports Environment variables (editor, locale, colors)
.aliases Shell aliases
.functions Shell helper functions
.zsh Zsh-specific options (history, completion)
.prompt Custom Zsh prompt with git status
.gitconfig Git config with extensive aliases
.editorconfig Editor formatting defaults
.duti Default app associations applied by bin/dotfiles default-apps
.tmux.conf Tmux configuration
Brewfile Declarative Homebrew package list
config/ App configs symlinked by bin/dotfiles symlinks
commands/ Scripts invoked by bin/dotfiles <command>

Customization

Create a ~/.extra file for machine-specific settings you don't want committed (it's gitignored). It will be sourced automatically if present.

Git commit signing

Commit and tag signing are enabled by default in .gitconfig using SSH signing (gpg.format = ssh).

Use ~/.gitconfig to define your machine-local signing key, for example:

[user]
	signingkey = ~/.ssh/id_ed25519_github_personal.pub

About

Setup dotfiles for mac.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors