Personal development environment configuration (dotfiles) for macOS. Includes shell, terminal emulator, editor, and AI agent configurations.
| File/Directory | Description |
|---|---|
.zshrc |
Zsh shell configuration with Powerlevel10k prompt |
.wezterm.lua |
WezTerm terminal emulator configuration |
nvim/ |
Neovim configuration based on NvChad v2.5 |
.agents/ |
AI coding agent skill definitions |
Install via Homebrew:
brew install neovim powerlevel10k zsh-autosuggestions zsh-syntax-highlightingInstall WezTerm and a Nerd Font (JetBrains Mono is used in this config).
For Go development, install Go and Delve (go install github.com/go-delve/delve/cmd/dlv@latest).
Clone the repository:
git clone https://github.com/s0x90/dotfiles.git ~/dotfilesSymlink the configuration files to their expected locations:
ln -sf ~/dotfiles/.zshrc ~/.zshrc
ln -sf ~/dotfiles/.wezterm.lua ~/.wezterm.luaThis config uses NvChad v2.5 as a Neovim framework. If you already have a Neovim config, back it up first:
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bakThen symlink the config from this repo:
ln -sf ~/dotfiles/nvim ~/.config/nvimOn first launch, lazy.nvim will bootstrap itself, pull NvChad, and install all plugins automatically. No separate NvChad installation is needed -- it is loaded as a lazy.nvim plugin dependency.
nvimWait for the initial plugin installation to complete, then restart Neovim.
Claude Code is Anthropic's AI coding agent for the terminal. The claudecode.nvim plugin runs it in a split inside Neovim and wires up selection sharing and in-editor diff review.
Install the CLI (this is the method used on this machine -- it installs to ~/.local/bin/claude
and self-updates, so keep ~/.local/bin on your PATH):
curl -fsSL https://claude.ai/install.sh | bashThen authenticate once:
claude- Prompt: Powerlevel10k with instant prompt
- Plugins: git (Oh-My-Zsh), zsh-autosuggestions, zsh-syntax-highlighting
- PATH: Homebrew, Go (
~/go/bin), pipx (~/.local/bin), Docker CLI completions - History: Shared across sessions with deduplication
- Leader key:
ALT + q(tmux-style workflow) - Theme: MaterialDarker
- Font: JetBrains Mono, size 14
- Max FPS: 120
- Tab management:
LEADER + c/x/b/n/0-9 - Pane splitting:
LEADER + \(horizontal),LEADER + -(vertical) - Pane navigation:
LEADER + h/j/k/l(vim-style) - Pane resizing:
LEADER + Arrow keys(5-unit increments)
- Framework: NvChad v2.5
- Theme: Material Darker
- LSP (via mason): gopls, golangci_lint_ls, lua_ls, html, cssls, eslint, jsonls, basedpyright, dockerls, bashls, marksman, sqls, ts_ls
- Formatting: StyLua (Lua), gofumpt (Go, via gopls), ruff (Python)
- Tools (via mason, ensured at startup): stylua, ruff, debugpy. gofumpt is external:
go install mvdan.cc/gofumpt@latest(expects~/go/binon PATH) - Debugging: nvim-dap + nvim-dap-ui + nvim-dap-go (Delve) + nvim-dap-python (debugpy) with virtual text
- Go development: go.nvim with custom test runner (colored PASS/FAIL output), struct tags, interface impl, coverage
- Completion: nvim-cmp with LuaSnip and friendly-snippets
- Key plugins: telescope.nvim, gitsigns, lazygit, auto-session, snacks.nvim, multicursor, diffmantic, codediff, claudecode.nvim
- Custom mappings:
<Space>as leader,jjto exit insert mode, window/tab/search bindings
| Key | Action |
|---|---|
<leader>gt |
Run all tests |
<leader>gtf |
Run test function under cursor |
<leader>gtp |
Run package tests |
<leader>gF |
Run tests in current file |
<leader>ga |
Add struct tags |
<leader>ge |
Insert if err != nil |
<leader>gi |
Implement interface |
<leader>gf |
Fill struct |
<leader>gc |
Toggle coverage |
<leader>gm |
Go mod tidy |
<F5> |
Debug test |
<F9> |
Toggle breakpoint |
<F10/F11/F12> |
Step over/into/out |
| Key | Action |
|---|---|
<F5> |
Debug: continue/launch |
<F9> |
Toggle breakpoint |
<F10/F11/F12> |
Step over/into/out |
<leader>dpt |
Debug pytest method under cursor |
<leader>dpc |
Debug pytest class under cursor |
| Key | Action |
|---|---|
<leader>ac |
Toggle Claude split |
<C-.> |
Toggle Claude split (needs a terminal that sends CSI-u) |
<leader>af |
Focus Claude |
<leader>ar |
Resume a previous session |
<leader>aC |
Continue the last session |
<leader>am |
Select model |
<leader>ab |
Add current buffer to context |
<leader>as |
Send visual selection (or add file from nvim-tree) |
<leader>aa / <leader>ad |
Accept / deny proposed diff |
<leader>aq |
Close all pending diffs |
Skill definitions for AI coding agents (e.g., Claude Code):
- critic -- Code review with focus on edge cases, race conditions, and security
- golangci-lint -- Run golangci-lint after Go code changes
- go-ddd -- Enforce Domain-Driven Design for Go services
- go-modern-guidelines -- Apply modern Go syntax guidelines based on project Go version
Neovim configuration is released under the Unlicense. Other dotfiles have no explicit license.
