Shell dotfiles and configs for macOS. Bash 5, Solarized Dark prompt, GNU coreutils, and a bunch of aliases/functions accumulated over the years.
Bootstrapped via macos-setup — see that repo for the full setup automation.
# Bootstrap: rsync dotfiles to ~ and reload shell
./bootstrap.sh -fTwo sync directories plus standalone files at the repo root:
home/— rsynced to~/(files that don't support XDG):.bash_profile,.bashrc,.claude/,.hammerspoon/,.hushlogin,.parallel/config/— rsynced to~/.config/(XDG-compliant config):bash/,git/,tmux/,readline/,curlrc,wgetrc,ghostty/,karabiner/,lazygit/,micro/,mise/,nnn/,opencode/,ripgrep/,fd/,terminal/bootstrap.sh— two rsyncs:home/→~/andconfig/→~/.config/keyboard-layouts/— custom Finnish Programmer keyboard layout (copied separately)
config/bash/— aliases, exports, functions, prompt, nnn configconfig/ghostty/— Ghostty terminal configconfig/git/— Git aliases, diff-so-fancy, 1Password SSH signing, global gitignoreconfig/karabiner/— Karabiner-Elements keyboard remapping- Caps Lock → Esc (alone) / Ctrl (held)
- Right Cmd + hjkl → arrow keys
- Tab → Hyper (Cmd+Ctrl+Opt+Shift) when held, Tab when tapped
config/lazygit/— Lazygit TUI configconfig/mise/— Mise runtime version manager configconfig/opencode/— OpenCode AI agent config, including theoh-my-openagentplugin entrypointconfig/ripgrep/— Ripgrep defaultsconfig/tmux/tmux.conf— tmux with Ctrl+A prefix, vim keys, pbcopyhome/.claude/— Claude Code user-level config (settings, keybindings, statusline)home/.hammerspoon/— Per-app US keyboard layout forcing, Ghostty dropdown toggle (Hyper+S)keyboard-layouts/— Custom Finnish Programmer keyboard layout
config/opencode/opencode.jsonis the synced OpenCode entrypoint and loadsoh-my-openagent@latestplusopencode-claude-auth.config/opencode/oh-my-openagent.jsonis the tracked companion config for agent/category model choices and plugin-managed behavior.config/opencode/AGENTS.mdis synced to~/.config/opencode/AGENTS.mdas the user-level instruction file.- This repo intentionally keeps the OpenCode-side customisation focused on the
plugin entrypoint, companion config, and user-level instructions. MCP server
inventory and bundled skills come from
oh-my-openagentitself rather than a second hand-copied local mirror here. - Claude-specific auth remains explicit through the separate
opencode-claude-authplugin entry inopencode.json. - No extra tmux/git-specific OpenCode wrapper config is tracked here. The repo relies on the platform's built-in git/browser/tooling capabilities plus the shared OpenAgent config instead of copying parallel custom wrappers into this dotfiles repo.
Forked from Mathias Bynens' dotfiles, which provided the original structure and many of the shell functions/aliases. Heavily customised since.