This is my dotfiles repo. There are many others, but this one is mine.
The dotfiles here are managed with chezmoi.
Prerequisites:
- Xcode Command Line Tools
- Homebrew
- Signed into the App Store (required for
masentries in the Brewfile)
Setup:
xcode-select --install
mkdir -p ~/Code/github.com/andremedeiros
git -C ~/Code/github.com/andremedeiros clone https://github.com/andremedeiros/dotfiles.git
cd ~/Code/github.com/andremedeiros/dotfiles
script/bootstrap
git remote set-url origin git@github.com:andremedeiros/dotfiles.gitscript/bootstrap installs chezmoi and runs chezmoi init --apply, which renders everything into ~/ and runs the run_* scripts (brew bundle, mise install, shell setup, vale sync). Some scripts need sudo. Finder shows ~/Code with a Developer icon.
After bootstrap:
- 1Password — sign in, then enable the SSH agent: Settings → Developer → "Use the SSH agent". Required for SSH commit signing (
op-ssh-sign) andssh/config'sIdentityAgent. - GitHub auth —
gh auth loginthengh auth setup-git. HTTPS remotes authenticate via gh's credential helper;git@github.com:URLs are rewritten to HTTPS byurl.insteadOfin gitconfig. - Neovim — run
nvimonce to bootstrap plugins, then:checkhealth. - Shell — log out/in (or
exec fish) so the new login shell takes effect.
You can also add secret/proprietary dotfiles on your iCloud drive. Anything inside iCloud Drive/dotfiles/blobs/ is rsynced into ~/ on every chezmoi apply.
chezmoi manages dotfiles by rendering a source directory (this repo) into your home directory. Unlike symlink-based managers, files are copied — edit the repo, then chezmoi apply.
How it works:
dot_foo→~/.foo,dot_config/→~/.config/,private_dot_ssh/→~/.ssh/(with 0700)run_*.shscripts execute duringchezmoi apply:run_once_before_*— one-time setup (icloud symlink, sudoers)run_before_*— every apply (iCloud blob/font sync)run_onchange_*— re-runs when the script changes;.tmplvariants also re-run when their inputs change (Brewfile, tool-versions)
Key commands:
chezmoi apply— render + install everythingchezmoi diff— preview changeschezmoi edit ~/.config/nvim/init.lua— edit the source for a targetchezmoi update— pull repo + apply
Fonts: Operator Mono lives in iCloud dotfiles/blobs/Library/Fonts/ (licensed, not committed). run_before_01-sync-blobs.sh rsyncs blobs into ~/ on every apply.
See the chezmoi documentation for more details.
This configuration uses LazyVim, a Neovim configuration framework built on lazy.nvim.
First-time setup:
- Ensure Neovim >= 0.11.2 is installed (via
brew install neovim) - Run
nvim- plugins will install automatically on first launch - Wait for installation to complete
- Run
:checkhealthto verify everything is working
Configuration files:
config/nvim/init.lua- Entry pointconfig/nvim/lua/config/keymaps.lua- Custom keybindingsconfig/nvim/lua/plugins/- Custom plugin configurations
Leader key is Space. Press Space in normal mode to see all available commands via which-key.
These are custom additions to LazyVim's defaults:
| Key | Mode | Action |
|---|---|---|
| H | Normal | Go to first non-whitespace character |
| L | Normal | Go to end of line |
| // | Normal | Clear search highlight |
| < / > | Visual | Indent without losing selection |
| Leader + p | Normal | Find files |
| Leader + Tab | Normal | Switch to alternate buffer |
| Leader + z | Normal | Toggle window zoom |
| Leader + u h | Normal | Toggle inlay hints (off by default) |
Tests run via neotest (LazyVim's test.core extra), with Go supported through neotest-golang:
| Key | Action |
|---|---|
| Leader + t r | Run nearest test |
| Leader + t t | Run current file |
| Leader + t T | Run all test files |
| Leader + t l | Run last test |
| Leader + t s | Toggle summary panel |
| Leader + t o | Show test output |
| Leader + t w | Toggle watch mode |
For LazyVim's built-in keybindings, see the official keymaps documentation.