This is my personal dotfiles, managed with chezmoi.
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply --source ~/dotfiles chengbo/dotfiles--source ~/dotfiles makes chezmoi clone the repo straight into ~/dotfiles, so that's
the one and only clone on the machine. Don't separately git clone this repo elsewhere —
a second clone can drift out of sync with the one chezmoi actually manages.
This repo only manages config files — it doesn't install the tools it configures. Everything below needs to be installed separately on a new machine.
Required everywhere:
- chezmoi — manages this whole repo
zsh+ Oh My Zsh — shell and framework (dot_zshrc)git— plusgit-delta(delta) as the diff pager, andtigas the git TUI- Neovim (0.10+) — config lives in
dot_config/nvim, bootstrapped via lazy.nvim/LazyVim; plugins install themselves on first launch, no separate install step needed ripgrepandfd— power Neovim's Snacks picker (find/grep) and its.gitignore-aware file filtering; without them it silently falls back to plainfind, which ignores.gitignoreentirely. On Ubuntu/Debian:sudo apt install ripgrep fd-find(the package installs asfdfind; symlink it tofdonPATHif some other tool expects the bare name)lsd— replacesls/ll/l- A Nerd Font in your terminal — needed for the
boprompt theme's icon,lsd's icons, and Neovim's UI (bufferline/neo-tree/dashboard) to render instead of showing blank boxes - 1Password — backs SSH auth (
SSH_AUTH_SOCK) and SSH commit/tag signing (commit.gpgsign = trueindot_gitconfig.tmpl); theallowedSignersFilealso has a specific pubkey hardcoded inprivate_dot_ssh/allowed_signers
Required for the AI CLI / MCP setup:
- Claude Code CLI (
claude) - Codex CLI (
codex) - Node.js (so
npxis available) — bothdot_claude/mcp.jsonanddot_codex/modify_private_config.tomlrunnpx -y @azure-devops/mcpon demand - Azure CLI (
az), logged in viaaz login— theadoMCP server authenticates with--authentication azcli
Optional (guarded — harmless if missing):
dotnetSDK —dot_path.zshadds~/.dotnetand~/.dotnet/toolstoPATH; also needed for Neovim's C# tooling (OmniSharp, csharpier, easy-dotnet.nvim) indot_config/nvim- Rust/Cargo —
dot_path.zshadds~/.cargo/bintoPATH - nvm —
dot_path.zshsources it only if present - Worktrunk (
wt) — shell integration indot_zshrconly loads ifwtis onPATH tmux— config indot_tmux.confsnap— only relevant on Linux distros that use it
WSL-only:
socatandnpiperelay.exe— bridge the WSL Unix socket to the Windows-side 1Password SSH agent named pipe (dot_zshrc)op-ssh-sign-wsl.exe— 1Password's SSH commit-signing helper, wired intodot_gitconfig.tmplonly when.chezmoi.os == "linux"
macOS-only:
reattach-to-user-namespace— used bydot_tmux-macos.conffor clipboard integration withpbcopy
chezmoi edit ~/.zshrc # edit a managed file (edits the source, not the target)
chezmoi diff # preview what would change
chezmoi apply # apply the source state to the home directory
chezmoi update # pull the latest changes from the repo and apply them
chezmoi cd # cd into the source directory to commit/push changes