Skip to content
loremipsonPublic

About

My personal macOS dotfiles, managed with GNU Stow.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

360 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

My personal macOS dotfiles, managed with GNU Stow.

Quick Start

git clone git@github.com:loremipson/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./install

The install script will:

  1. Install Homebrew if not already present
  2. Run brew bundle to install all dependencies from the Brewfile
  3. Symlink all config packages into $HOME via Stow
  4. Ask for your git name and email (saved to ~/.gitconfig, not this repo)
  5. Rebuild bat's theme cache
  6. Install language runtimes with mise
  7. Install TPM and the tmux plugins
  8. Set zsh as the default shell if it isn't already

Post-install

There's a couple things you'll want to do after (or before, honestly) installing.

  • Set the Menu Bar in MacOS Settings to "Always" hide. You might want to enable the background as well, the default Menu Bar is still accessible by hovering at the top, and background enabled makes it easier to interact with.
  • Change or remove the shortcut for MacOS Spotlight found in System Settings -> Keyboard -> Keyboard Shortcuts -> Spotlight. I set mine to ⌥+space so that it's still accessible if I ever need it. Vicinae will operate with ⌘+space.

Re-running

The install script is safe to run again whenever. If a step fails, the rest still run, and you'll get a summary at the end with the command to rerun just that part.

./install                     # everything
./install mise tpm            # just these steps
./install stow git yazi       # just these packages (package names go after "stow")
./install --backup stow git   # move existing files out of the way, then stow

If Stow finds a real file where a symlink should go, it won't touch it. Run with --backup to move those files to ~/.dotfiles-backup/ first. Logs from every run end up in ~/.local/state/dotfiles/.

Git

Shared settings (delta, aliases, defaults) live in ~/.config/git/config, which comes from this repo. Your name, email, and anything else personal go in ~/.gitconfig, which stays yours. Git reads both, and ~/.gitconfig wins if they overlap, so git config --global works like normal.

Shell Commands

The Zsh config maps several familiar commands to newer tools:

Command Runs
cat bat
ls eza with Git status and icons
tree eza --tree
cd Zoxide's z
grep rg
find fd

These tools do not support every option or behavior of the commands they replace. Add _ to use the original command when needed: cat_, ls_, grep_, find_, or cd_.

Language Versions

mise installs the default versions of Node, pnpm, Bun, Deno, and Go from mise/.config/mise/config.toml. To pin different versions for a project (or a whole folder of them), drop a mise.toml in that directory:

[tools]
node = "24"
pnpm = "11"

Time Tracking (optional)

Tmux hooks can log session activity to Timewarrior so time is tracked per tmux session. This is off by default, since it's only useful for specific situations, not every machine.

To enable it:

  1. Create ~/.tmux.conf.local with:
   set-hook -g client-attached 'run-shell "~/.config/tmux/track-time.sh"'
   set-hook -g client-session-changed 'run-shell "~/.config/tmux/track-time.sh"'
   set-hook -g client-detached 'run-shell "~/.config/tmux/track-time.sh"'
  1. Reload tmux config or restart the server.

Each tmux session name becomes a Timewarrior tag. View tracked time with timew summary :all or timew day.

Workmux

This configuration uses workmux to manage Git worktrees and their associated tmux sessions.

There are two supported workflows:

  • Git — the default, for repositories using normal Git branches.
  • Graphite — for repositories where Graphite owns the branch/stack topology and workmux owns the worktrees.

The workflow can be selected in ~/.tmux.conf.local:

set -g @workflow "graphite"

If no Graphite workflow is configured, the normal Git/workmux workflow is used.

Open the workmux menu with:

prefix + w

Use the menu's help entry or run man dotfiles-workmux for the full Git and Graphite workflows.

About

My personal macOS dotfiles, managed with GNU Stow.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Contributors

Languages