./bootstrapInstalls Homebrew (if missing), packages, stows dotfiles, installs Go and npm globals, and writes macOS defaults. Safe to re-run.
Private overlays (work, personal) live in sibling dotfiles-private-* repos, each with its own self-contained ./bootstrap. Run those separately on machines that need them - they complement this bootstrap rather than replacing it.
stow -d ~/Developer/github.com/pszypowicz -t ~ dotfiles --dotfiles --restow --no-folding--dotfiles- takes filename prefixdot-and replace it in a target with.--restow- remove from target non-existent links--no-folding- create package subdirs as real dirs in the target and only symlink individual files, instead of collapsing subtrees into one dir-symlink. Prevents tools that write live state inside a config dir (e.g. Claude Code writinghistory.jsonl,projects/, caches into~/.config/claude) from accidentally writing into the git repo through a folded dir-symlink.-d ~/Developer/github.com/pszypowicz- shared stow directory, lets overlay packages coexist with the base package
Shells: Fish (primary, vi keybindings), Bash, Zsh Terminal: Tmux, Starship prompt Window management: AeroSpace (tiling), Borders, Hammerspoon Status bar: SketchyBar Dev tools: Git, GitHub CLI, Vim, fd, fzf, Claude Code Other: npm, Homebrew
Configs live under ~/.config via XDG env vars set in env.fish (and equivalents in bash/zsh). env.fish also relocates tool state directories (Gradle, npm, Android, bundler, etc.) out of ~/.
Fish sources fzf shell integration (fzf --fish), providing Ctrl+T (files), Ctrl+R (history), and Alt+C (directories). env.fish customizes these to use fd for file/directory discovery, zoxide results in Alt+C, and a tmux popup for the UI.
dot-config/fd/ignore stows to ~/.config/fd/ignore, which fd reads to exclude paths from search results. Since fzf is configured to use fd under the hood, these patterns also filter what appears in Ctrl+T and Alt+C.
Current config excludes macOS system directories: /Library, /Applications, /Movies, /Music, /Pictures, /Public.
Library/LaunchAgents/com.felixkratz.sketchybar.plist is a custom launchd plist that replaces brew services start sketchybar.
Why: The Homebrew-generated plist loads in all five launchd session types (Aqua, Background, LoginWindow, StandardIO, System), which causes lock-file conflicts and log noise on reboot. The custom plist restricts loading to the Aqua session only via LimitLoadToSessionType.
Switching from brew services:
brew services stop sketchybar
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.felixkratz.sketchybar.plistManaging the service:
# Stop
launchctl bootout gui/$(id -u)/com.felixkratz.sketchybar
# Start
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.felixkratz.sketchybar.plist
# Restart (quick) - KeepAlive auto-relaunches after kill
killall sketchybarUpstream issue: FelixKratz/homebrew-formulae#17 - once resolved, brew services can be used directly and this custom plist can be removed.