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) |
| 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