Stolen Adopted from various dotfiles, changed and extended to my needs.
It should have been a fork, but I decided against it.
This collection includes configurations for:
- fish via Fisher (loads
PatrickF1/fzf.fishand the Tide prompt) - git with sensible defaults, helpful aliases and fish abbreviations (
config/fish/conf.d/30-git-abbr.fish, replacing the Oh My Zshgitplugin) - VS Code settings and extensions (because who doesn't love a good editor war?)
- homebrew packages organized by context (work, personal, optional)
- prettier for keeping things looking sharp
- Various other tools and utilities that make terminal life bearable
Prerequisites: You'll need macOS and a sense of adventure.
-
Clone the repository:
git clone https://github.com/stoe/.dotfiles.git ~/code/private/.dotfiles cd ~/code/private/.dotfiles
-
Install dependencies:
npm install
-
Run the dotfiles setup (this installs dependencies and configures links):
script/setup
[!NOTE] Review
script/setupbefore running it. It refuses to replace a real~/.configdirectory. Usescript/setup --dry-runto preview links without changing your home directory.
The beauty of dotfiles is making them your own. Local/private overrides live outside this repo (in ~/Documents/.dotfiles/) and are symlinked into $DFH under their real filenames so the content itself is never committed:
-
$DFH/.gitconfig.localfor the default (machine-wide) git identity:This is the machine-neutral default, included unconditionally (
[include]) and for repos under~/code/scratch/. Symlink it to whichever identity that machine should default to:Machine Symlink target personal ~/Documents/.dotfiles/.gitconfig.personal.localwork ~/Documents/.dotfiles/.gitconfig.github.localscript/setuppicks the right target from your hostname; if it can't tell which machine it's on, it prints theln -sfncommand to run manually. -
$DFH/.gitconfig.personal.localfor your personal git settings:Symlink this to a private file (e.g.
~/Documents/.dotfiles/.gitconfig.personal.local) containing private info like your name, email, and signing key for commits.[user] name = Your Name email = your.email@example.com signingkey = your-ssh-key-here
Included for repos under
~/code/private/([includeIf]) β see.gitconfig. -
$DFH/.gitconfig.github.localfor work-context git settings:Symlink this to
~/Documents/.dotfiles/.gitconfig.github.local; included for repos under~/code/work/. -
$DFH/.config.personal.local.fishfor machine-specific shell configuration:Symlink this to
~/Documents/.dotfiles/.config.personal.local.fish. Add any abbreviations, exports, or functions you want to keep private or specific to this machine. Sourced automatically (if present) byconfig/fish/conf.d/90-local.fish. -
script/brew/Brewfile.*for package management by context -
script/brew/cleanupfor removing packages not listed in the active Brewfiles
Important
None of the $DFH/.gitconfig.*.local, $DFH/.config.personal.local.fish files are tracked by git β they're gitignored symlinks pointing outside the repo. Create the symlinks yourself, e.g.:
ln -s ~/Documents/.dotfiles/.gitconfig.personal.local "$DFH/.gitconfig.personal.local"
ln -s ~/Documents/.dotfiles/.gitconfig.github.local "$DFH/.gitconfig.github.local"
ln -s ~/Documents/.dotfiles/.config.personal.local.fish "$DFH/.config.personal.local.fish"
# Default identity for this machine β use .gitconfig.github.local on a work machine
ln -sfn ~/Documents/.dotfiles/.gitconfig.personal.local "$DFH/.gitconfig.local"The brew installer is smart enough to detect your machine and install different packages:
Brewfile.workfor your work machineBrewfile.personalfor your personal machine- Plus shared configs for VS Code and optional packages