Single command to bootstrap a new machine:
./install.shThis will:
- Install Homebrew (if not already installed)
- Run
brew bundleto install all packages - Install oh-my-zsh (if not already installed)
- Link dotfiles into
$HOMEvia rcm (rcup) - Sync Neovim plugins via lazy.nvim
- Install the tmux-256color terminfo entry
Or via Make:
make install| Command | What it does |
|---|---|
make brew | Run brew bundle only |
make link-dotfiles | Re-link dotfiles via rcup |
make init-nvim | Sync Neovim plugins headlessly |
- zsh is the primary shell with oh-my-zsh
- Theme:
apple(provides the prompt character viatoon) - Plugins:
autojump,direnv,colored-man-pages - Node version management via Volta (configured in
~/.zshenv)
Config lives at ~/.config/nvim/init.lua.
lazy.nvim — self-bootstrapping, no manual install required. On first launch it will download and install all plugins automatically.
Uses Neovim's native LSP (vim.lsp.config / vim.lsp.enable — Neovim 0.11+
API). mason.nvim automatically
installs language servers on first open.
Servers installed automatically:
| Language | Server |
|---|---|
| Go | gopls |
| TypeScript / JavaScript | ts_ls |
| Rust | rust_analyzer |
| JSON | jsonls |
| YAML | yamlls |
| HTML / CSS | html, cssls |
Note: Go must be installed (
brew install go) beforegoplscan be installed by mason.
| Plugin | Purpose |
|---|---|
| nvim-treesitter | Syntax highlighting + folding |
| nvim-cmp + LuaSnip | Completion |
| conform.nvim | Format on save (goimports, prettier, rustfmt) |
| nvim-lint | eslint on save for JS/TS |
| telescope.nvim | Fuzzy file/buffer/grep search |
| nvim-tree | File browser (<C-n> to toggle) |
| vim-go | Go test/run/generate/alternate commands |
| vim-fugitive | Git |
| gitsigns.nvim | Git gutter signs |
| vim-surround / vim-commentary | Editing utilities |
| Mapping | Action |
|---|---|
gd | Go to definition |
gr | References |
K | Hover docs |
,rn | Rename symbol |
,ac | Code action |
[c / ]c | Previous / next diagnostic |
<C-p> | Find files (Telescope) |
<C-p>b | Find buffers |
,fg | Live grep |
<C-n> | Toggle file tree |
<C-t> | Open terminal (vertical split) |
Within nvim-tree (cursor on a file) or a Telescope picker (results list):
| Mapping | Action |
|---|---|
<C-v> | Open file in a vertical split |
<C-x> | Open file in a horizontal split |
From a known path, use :vsplit <file> / :split <file> directly.
| Abbreviation | Expands to |
|---|---|
tfunc | func Test(t *testing.T){} |
trun | t.Run(, func(t *testing.T){}) |
ierr | if err != nil {} |
Config: ~/.config/alacritty/alacritty.toml
- Font: Source Code Pro, size 17
- Theme: Gruvbox dark
- Shell:
/bin/zsh --login - Install the font with:
brew install --cask font-source-code-pro(included in Brewfile)
- Prefix:
Ctrl-B - Mouse support enabled
- Vi-mode keybindings
- Pane navigation:
h/j/k/l - History limit: 20,000 lines
- The tmux-256color terminfo entry is installed automatically by
install.sh
If using tmate alongside tmux, alias tmux to point directly at the conf:
alias tmux='tmux -f $HOME/workspace/dotfiles/dotfiles/tmux.conf'tmate ships with an older tmux version, so tmate.conf is kept separate in
$HOME to avoid copy/paste conflicts between the two.
- GPG signing enabled
push.autoSetupRemote = true— no need to specify upstream on first push- Useful aliases:
lol(log graph),p(pull --rebase),rum(rebase upstream/master) - GitHub SSH remapping:
https://github.com→git@github.com: - Git LFS enabled