Personal macOS development environment — terminals, shell, editor, window manager, and AI tooling — kept under version control and wired in via symlinks.
This repo is the source of truth for the configs in ~/.config and ~/.
Each top-level directory or dotfile is symlinked into its expected location by
install.sh, so editing files here changes the live environment
on the next reload.
The Neovim config is the biggest piece — a from-scratch setup that grew out of a LazyVim distro but no longer depends on it (every plugin spec, keymap, and option is owned in this repo). See nvim/lua/config/keymaps.lua for the keymap mental model documented at the top of the file.
| Path | Purpose |
|---|---|
nvim/ |
Neovim config (~30 plugin specs). Pickers via snacks.nvim, completion via blink.cmp, treesitter v1 main-branch, LSP via nvim-lspconfig + mason |
.tmux.conf |
tmux: prefix C-s, vim-tmux-navigator integration, true-color, kitty graphics passthrough, focus-events for nvim's autoreload |
kitty.conf |
kitty terminal: FiraCode Nerd Font, blurred background, cursor trail, auto-attach to tmux on launch |
current-theme.conf |
active kitty colorscheme |
.zshrc |
zsh + oh-my-zsh + powerlevel10k prompt |
.p10k.zsh |
powerlevel10k prompt config |
.aerospace.toml |
AeroSpace tiling window manager |
yazi/ |
yazi file manager config |
opencode/ |
opencode AI agent skills tree |
eligere/ |
eligere CLI config |
Brewfile |
Homebrew bundle: ~27 packages + casks (nvim, tmux, fzf, ripgrep, lazygit, docker, …) |
install.sh |
Bootstrap script: brew bundle, symlinks, oh-my-zsh themes |
scripts/ |
Helper scripts (daily-note creation, etc.) |
p10k_fonts/ |
powerlevel10k recommended font binaries |
24-bit-color.sh |
True-color test print |
# 1. Install Homebrew (skip if already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Install oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 3. Clone this repo to ~/.dotfiles
git clone https://github.com/RomanVolkov/dotfiles.git ~/.dotfiles
# 4. Run the bootstrap
cd ~/.dotfiles
bash install.shinstall.sh does three things:
- Installs the powerlevel10k zsh theme.
- Runs
brew bundleagainstBrewfile. - Creates symlinks from
~and~/.configinto this repo (so live edits in~/.dotfilesare reflected immediately).
To track a new config under this repo, mirror the pattern used for nvim/yazi/opencode/eligere:
mv ~/.config/<tool> ~/.dotfiles/<tool>
ln -s ~/.dotfiles/<tool> ~/.config/<tool>
# then add the symlink line to install.sh and commitNeovim — built from scratch on top of lazy.nvim. Picker is snacks.nvim
(no telescope), completion is blink.cmp, treesitter is on the v1.0+ main
branch. Keymaps follow a noun-first convention: <leader>{f,b,s,g,c,x,w,q}*.
<leader>? opens the keymap fuzzy picker; pressing <leader> and pausing
shows which-key. The mental model is documented at the top of
nvim/lua/config/keymaps.lua.
tmux — prefix is C-s. prefix-r reloads the config. Vim and tmux pane
navigation are unified via <C-h/j/k/l> (vim-tmux-navigator). Kitty graphics
passthrough is on for image previews; focus events are on so nvim's
:checktime autoreload works inside tmux.
kitty — auto-attaches to tmux on launch. Cmd+F opens an fzf overlay
over the scrollback buffer.
If something breaks on your setup or a config is missing, open a ticket at github.com/RomanVolkov/dotfiles/issues.
Roman Volkov — github.com/RomanVolkov