Skip to content

MattLewin/dotfiles

Repository files navigation

dotfiles

macOS and UNIX configuration files

Usage

Instead of cloning the repo, use this one as a template by clicking here, and then customize to your needs.

Installation

Clone the repo, then:

make

This will install Homebrew (macOS only), Antidote, and GNU stow, then use stow to link all dot files into your home directory.

CAUTION: You probably never want to type make. This entire set up is heavily customized for my usage. I've made it available so others can copy, modify, and then deploy it for themselves.

After installing, run direnv allow in the repo root to activate the local ripgrep config.

Homebrew bundle

misc/dot-config/homebrew/Brewfile

Run with:

brew bundle

Local overrides (portable setup)

To keep this portable across machines/users, put user-specific settings in local files that are not tracked:

  • ~/.config/dotfiles/local.zsh (zsh overrides)
  • ~/.config/dotfiles/local.fish (fish overrides)
  • ~/.gitconfig.local (git identity, per-user settings)

Create the local files from templates:

install_scripts/bootstrap-local.sh

Templates live at:

  • misc/dot-config/dotfiles/local.zsh.example
  • misc/dot-config/dotfiles/local.fish.example
  • git/dot-gitconfig.local.example

Zsh plugins (Antidote)

Antidote replaces Oh My Zsh. It's a lightweight plugin manager that clones repos and compiles them into a single sourceable file.

How it works

Every shell startup, plugins_builder.zsh runs and writes ~/.zsh_plugins.txt — a list of plugins to load (only if the list has changed). Then .zshrc checks whether ~/.zsh_plugins.txt is newer than ~/.zsh_plugins.sh; if so, Antidote recompiles the bundle:

antidote bundle < ~/.zsh_plugins.txt > ~/.zsh_plugins.sh

~/.zsh_plugins.sh is then sourced. This means plugin updates only take effect after the bundle is recompiled — which happens automatically the next time you open a shell after the plugin list changes.

Completions (compinit) run before plugins are sourced. zsh-users/zsh-completions adds extra completions on top of that. The compiled completion cache lives at ~/.zcompdump.

Adding a plugin

Edit zsh/dot-zsh/plugins_builder.zsh. There are two cases:

Always load it — add to the ALWAYS_ON array:

local -a ALWAYS_ON=(
  ...
  owner/repo                                    # non-OMZ plugin
  'ohmyzsh/ohmyzsh path:plugins/plugin-name'   # OMZ plugin
)

Load only when a binary is present — add to the WANT map:

typeset -A WANT=(
  [plugin-name]=binary-to-check-for
)

After editing, open a new shell. The plugin list will be rebuilt and Antidote will recompile the bundle automatically.

Updating plugins

antidote update

Then open a new shell (or source ~/.zsh_plugins.sh) to pick up the changes.

Local/custom plugins

Drop any .zsh file into ~/.zsh/plugins/. It will be sourced automatically at startup — no Antidote involvement needed. Rename the extension to disable it.

Syntax highlighting

zsh-users/zsh-syntax-highlighting is always forced to load last by plugins_builder.zsh. Don't move it.

Health check

Quick check for required/optional tools:

misc/scripts/dotfiles-healthcheck


Copyright (c) Nobody, No rights reserved.

About

A simple repository for my macOS and UNIX dot files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors