My Setup

Reproducible Dev Environment

One command to set up my entire macOS development environment. Dotfiles, CLI tools, Neovim, and more.

15+CLI Tools
75+Nvim Plugins
8Config Files
1Command

Tool Stack

What Powers My Workflow

Connections

NeovimTmuxvim-tmux-navigator
NeovimClaude Codeclaudecode.nvim
KittyTmuxTrue color passthrough
fzfbatPreview with syntax highlighting

Setup Guide

Interactive Bootstrap Builder

Flag Builder

--link-onlyOnly create symlinks, skip all installations
SKIP_SSHSkip SSH key generation
SKIP_BREWSkip Homebrew bundle install
SKIP_NODESkip Node.js installation via nvm
SKIP_OBSIDIANSkip Obsidian vault clone
SKIP_DEFAULTSSkip macOS system defaults

Bootstrap Steps

1

Install Oh My Zsh

Shell framework + Powerlevel10k theme

2

Generate SSH Key

Ed25519 key for GitHub authentication

3

Symlink Configs

Link all dotfiles to their target locations

4

Install TPM

Tmux Plugin Manager

5

Create Secrets File

Template for API keys and tokens

6

Homebrew Bundle

Install all packages from Brewfile

7

Install Node.js

LTS version via nvm

8

Clone Obsidian Vault

Personal knowledge base

9

macOS Defaults

System preferences for development

$./dotfiles/scripts/bootstrap.sh
Config Files

Browse My Configs

kitty.confconf
1# vim:fileencoding=utf-8:foldmethod=marker
2
3# Font
4font_family MesloLGS NF
5bold_font auto
6italic_font auto
7bold_italic_font auto
8font_size 13.0
9
10# Cursor
11cursor_shape beam
12cursor_blink_interval 0
13
14# Scrollback
15scrollback_lines 10000
16
17# Window
18window_padding_width 4
19background_opacity 1.0
20
21# Tab bar
22tab_bar_style powerline
23tab_powerline_style slanted
24
25# Behavior
26confirm_os_window_close 0
27shell_integration enabled
28
29# macOS keybindings
30map cmd+t new_tab
31map cmd+w close_tab
32map cmd+n new_os_window
33map cmd+backspace send_text all \x15
34
35# BEGIN_KITTY_THEME
36include current-theme.conf
37# END_KITTY_THEME
38
39# Performance
40repaint_delay 6
41sync_to_monitor yes
42input_delay 1
43
44# Visual Polish
45modify_font cell_height 120%
46modify_font underline_position 2
47undercurl_style thin-sparse
48url_style curly
49
50# URL Handling
51detect_urls yes
52open_url_with default
53
54# Scrollback (enhanced)
55scrollback_pager_history_size 10
56scrollback_fill_enlarged_window yes
57
58# Mouse
59copy_on_select clipboard
60mouse_hide_wait 3.0
61strip_trailing_spaces smart
62
63# macOS-Specific
64macos_option_as_alt yes
65macos_titlebar_color background
66macos_quit_when_last_window_closed yes
67macos_show_window_title_in window
68
69# Additional Keybindings
70map cmd+equal change_font_size all +1.0
71map cmd+minus change_font_size all -1.0
72map cmd+0 change_font_size all 0
73map cmd+f launch --type=overlay --stdin-source=@screen_scrollback /usr/bin/less +G -R
74
75# Notifications
76notify_on_cmd_finish invisible 15
77

CLI Cheatsheet

Custom Aliases & Functions

fnvim $(fzf -m --preview="bat --style=numbers --color=always {}")

Fuzzy-find files and open in Neovim with bat preview

tatmux attach-session -t

Attach to a tmux session by name

ccclaude

Launch Claude Code

cccclaude --continue

Continue last Claude Code conversation

ccrclaude --resume

Resume a Claude Code conversation

ccpclaude --print

Print-only mode (no interactive)

tsfixfor f in ~/.local/share/nvim/site/parser/*.so; do codesign --force --sign - "$f"; done

Re-sign nvim tree-sitter parsers (macOS fix)

sft <n>git switch "feature/CHART-$1"

Switch to a feature branch by ticket number

cft <n>git checkout -b "feature/CHART-$1"

Create a feature branch by ticket number

c projectscd ~/projects

Quick navigate to projects directory

Keybindings

Keyboard Shortcuts Reference

Panes

prefix+|Split pane horizontally
prefix+-Split pane vertically
prefix+mMaximize/restore pane
prefix+H/J/K/LResize pane (repeatable)

Windows

prefix+cNew window (current dir)

General

prefix+rReload tmux config

Copy Mode

prefix+vBegin selection (copy mode)
prefix+yCopy selection

Navigation

Ctrl+h/j/k/lNavigate between tmux panes and Neovim splits