基于 chezmoi 管理的 macOS(Apple Silicon)个人开发环境配置。
本仓库是 chezmoi 的源目录(source directory,位于 ~/.local/share/chezmoi),
通过 chezmoi apply 将文件渲染到 $HOME 下对应位置。主体为静态文件,仅有的模板是
symlink_dot_zshrc.tmpl / symlink_dot_zimrc.tmpl(各一行,将 ~/.zshrc/~/.zimrc 指向
~/.config/zsh/ 的 XDG 收敛),其余所见即所得;通过 .chezmoiignore 将根级与嵌套的
README.md / LICENSE、docs/、*.local / *.bak 等仅供仓库查阅或本地覆盖的文件排除在
部署之外,避免污染目标 HOME 目录。
| 领域 | 方案 | 说明 |
|---|---|---|
| Shell | Zsh + Zim + 自有模块 | aliases.zsh / fzf.zsh / sdk.zsh 三模块化加载;update-all 批量更新(brew/sdk/rustup/tldr/uv/mise,支持参数过滤与失败计数) |
| Fish | Fish + Fisher + Starship | Ghostty 登录 shell(fish -l,tmux default-shell 同步);fish_plugins 锁定 14 个插件(fzf.fish / forgit / autopair / done 等),conf.d 五文件设定 PATH/LANG/EDITOR 等环境,补全含 OrbStack docker/kubectl/orbctl 符号链接 |
| 提示符 | Starship | Catppuccin Mocha powerline 风格(starship.toml 为机器本地文件,未入库) |
| 模糊搜索 | fzf + fzf-tab + fd | Ctrl-R 历史、Ctrl-T 文件、Alt-C 目录、frg/fkill/ftm/fl* 交互函数 |
| 终端 | Ghostty(主力)/ Alacritty(备用) | JetBrainsMono Nerd Font Mono,Catppuccin Mocha 配色(Dracula 以注释模板保留于 alacritty) |
| 编辑器 | Neovim + LazyVim | 10 个 extras(9 语言 + 1 UI,见 lua/config/lazy.lua),插件版本由 lazy-lock.json 锁定 |
| 运行时管理 | mise | 多运行时一键切换(工具清单见 private_dot_config/mise/config.toml) |
| Git 工作流 | git + gh (CLI) | LFS、GitHub 走本地 SOCKS5 代理、push.default=current + autoSetupRemote |
| SSH | OpenSSH ~/.ssh/config |
ssh.github.com:443 + 自适应 ProxyCommand(探活 127.0.0.1:5376 SOCKS5,失败直连)+ OrbStack Include |
| AI Agent | pi coding agent | 受限运行环境:文件系统与网络沙箱、细粒度权限矩阵与工作流分层(并发/进度/模型),详见 private_dot_pi/ 配置与 dev-tools.md |
- macOS(Apple Silicon 优先;Intel 路径在 zsh/fzf 模块中有兼容分支)
- Homebrew
- chezmoi ≥ 2.x:
brew install chezmoi - 字体:JetBrainsMono Nerd Font Mono:
brew install --cask font-jetbrains-mono-nerd-font
完整依赖清单见 docs/getting-started.md。
先把本仓库推送到你自己的 Git 远程,然后:
chezmoi init --apply <user>/<repo> # 克隆源目录并立即应用
exec zsh # 重启 shell首次启动 Zsh 会自动下载 zimfw 并初始化模块; 首次打开 Neovim 会自动 bootstrap lazy.nvim 并安装全部插件(需要网络)。
源目录已就位时:
chezmoi diff # 先预览将要发生的变更
chezmoi apply # 确认无误后应用日常修改配置请走「编辑源 → diff → apply → commit」流程, 详见 docs/maintenance.md。
chezmoi 命名约定:dot_ → 隐藏目录/文件(. 开头),private_ → 权限收紧(目录 0700 / 文件 0600),
symlink_ → 符号链接(文件内容即链接目标)。完整逐文件映射见
docs/layout.md。
~/.local/share/chezmoi 应用到 $HOME
├── .chezmoiignore → (不部署) 过滤根级与嵌套 README.md / LICENSE、docs/ 与 *.local / *.bak / *token* 等,避免污染家目录
├── .gitignore → (git 侧) 忽略 .vscode / .git / node_modules / **/.DS_Store / *.log 等
├── symlink_dot_zshrc.tmpl → ~/.zshrc (→ ~/.config/zsh/.zshrc) 模板符号链接,内容为 {{ .chezmoi.homeDir }}/.config/zsh/.zshrc
├── symlink_dot_zimrc.tmpl → ~/.zimrc (→ ~/.config/zsh/.zimrc) 同上(XDG 收敛,兼容 ~/.zshrc 路径)
├── dot_gitconfig → ~/.gitconfig 用户信息 / 代理 / LFS / push 行为
├── dot_gitignore_global → ~/.gitignore_global 全局忽略规则(构建产物根锚定,无 bin/)
├── dot_tmux.conf → ~/.tmux.conf tmux 配置(Fish 登录 shell、tpm 插件、Catppuccin Mocha 状态栏)
├── dot_codex/
│ └── private_config.toml → ~/.codex/config.toml cc-switch 本地代理配置(0600,详见 dot_codex/private_config.toml)
├── private_dot_claude/
│ └── settings.json → ~/.claude/settings.json Claude Code 设置(目录 0700 / 文件 0644;statusLine bun 动态解析/插件/环境)
├── private_dot_config/
│ ├── zsh/ → ~/.config/zsh/ ★ 三模块 zsh 配置 + 入口文件(含独立 README,不部署)
│ │ ├── dot_zshrc → ~/.config/zsh/.zshrc Zsh 入口:Zim 引导 + 工具 eval + 模块加载(symlink 目标,真实文件)
│ │ ├── dot_zimrc → ~/.config/zsh/.zimrc Zim 模块清单(仅供 zimfw 读取,symlink 目标)
│ │ ├── aliases.zsh → ~/.config/zsh/aliases.zsh
│ │ ├── fzf.zsh → ~/.config/zsh/fzf.zsh
│ │ ├── sdk.zsh → ~/.config/zsh/sdk.zsh
│ │ ├── dot_gitignore → ~/.config/zsh/.gitignore
│ │ └── README.md → (不部署) 模块文档,由 **/README.md 排除
│ ├── ghostty/config → ~/.config/ghostty/config Ghostty 终端(command = fish -l)
│ ├── alacritty/alacritty.toml → ~/.config/alacritty/alacritty.toml Alacritty 备用
│ ├── mise/config.toml → ~/.config/mise/config.toml mise 工具链
│ ├── nvim/ → ~/.config/nvim/ LazyVim 配置(含 lazy-lock.json / stylua.toml)
│ └── private_fish/ → ~/.config/fish/ Fish 辅助配置(Starship + Fisher 14 插件清单)
│ ├── config.fish → ~/.config/fish/config.fish
│ ├── fish_plugins → ~/.config/fish/fish_plugins Fisher 14 插件清单
│ ├── private_completions/ → ~/.config/fish/completions/ symlink_docker/kubectl/orbctl.fish → OrbStack
│ ├── private_conf.d/, private_functions/ → conf.d(00_env / 00_aliases / 01_dev / 01_rev / fzf 五文件)与 functions/(fzf.fish 插件函数)
│ └── themes/ → ~/.config/fish/themes/ 空占位目录(仅 .keep)
├── private_dot_ssh/
│ └── private_config → ~/.ssh/config ★ GitHub 走 ssh.github.com:443 + 自适应 SOCKS5 ProxyCommand(含 OrbStack Include;~/.ssh 目录 0700)
└── private_dot_pi/
├── private_agent/ → ~/.pi/agent/ pi coding agent 主配置(目录 0700)
│ ├── settings.json → ~/.pi/agent/settings.json pi coding agent 主题/扩展/默认 provider/tools/model/代理
│ ├── sandbox.json → ~/.pi/agent/sandbox.json 文件系统与网络沙箱策略
│ ├── landstrip.json → ~/.pi/agent/landstrip.json 子代理与任务权限
│ └── extensions/pi-permission-system/config.json → 细粒度工具权限矩阵(允许优先:默认 allow,敏感路径/高危命令 deny)
└── workflows/
└── settings.json → ~/.pi/workflows/settings.json 工作流设置(并发/进度面板)
根级
README.md/LICENSE/docs/与全部嵌套README.md/LICENSE(含zsh/README.md、nvim/README.md、nvim/LICENSE)均由.chezmoiignore(**/README.md、**/LICENSE等按目标名书写的模式)排除、不部署;历史上的**/REAMDME.md拼写失配与dot_git/dot_DS_Store/dot_gitconfig源名失配已修复。managed目标数演进:核心 55 → zsh 收敛后 57(dot_zshrc/dot_zimrc→private_dot_config/zsh/dot_*+ 2 条symlink_*.tmpl),鱼 shell 扩容后曾达 81(纳入.config/fish/fish_variables后为 82);当前chezmoi managed | wc -l为 85(核心 49 + fish 36;2026-09-07model-tiers.json移除与dot_neoconf.json删除后),详见 docs/layout.md 目标映射;后续去重又清理了被更宽模式覆盖的冗余行,目标数不再单调变化。
| 文档 | 内容 |
|---|---|
| docs/getting-started.md | 安装步骤、必需/推荐/可选依赖、应用后验证清单 |
| docs/layout.md | 全部源文件 → 目标路径映射、chezmoi 命名约定详解 |
| docs/shell.md | Zsh 启动链路、Zim 模块、Starship 提示符、Fish 的角色 |
| docs/terminals.md | Ghostty 与 Alacritty 配置详解与键位表 |
| docs/neovim.md | LazyVim 结构、extras、键位、插件锁定与升级 |
| docs/dev-tools.md | git / gh / mise / codex / pi agent 配置说明 |
| docs/maintenance.md | 日常维护流程、常用命令、验收清单、常见问题 |
| private_dot_config/zsh/README.md | zsh 三模块内部契约(加载顺序、依赖、函数速查) |
| private_dot_config/nvim/README.md | Neovim/LazyVim 使用说明 |
索引与
docs/目录保持一致(7 篇主文档 + 2 篇子目录 README),新增配置请同步更新 docs/layout.md。
- 敏感度较高的路径使用
private_前缀收紧权限:目录0700(如~/.ssh/、~/.pi/agent/、~/.config/fish/),文件0600(如private_前缀的~/.codex/config.toml)。 ~/.config/gh/下的config.yml与hosts.yml均由gh auth login在目标机器上生成,含凭据,不入仓库。- pi agent 的沙箱与权限策略显式拒绝读取
*.env、~/.ssh/*、~/.aws/*等, 并禁止sudo/rm类命令——细节见 docs/dev-tools.md。 dot_gitconfig与private_dot_ssh/private_config中包含本地代理地址(socks5://127.0.0.1:5376,git 一处(gitconfig 单条代理行)与 SSH 探测均统一为 5376,仅对github.com/ssh.github.com生效) 与个人身份信息,公开 fork 前请先脱敏。
- 目标平台:macOS (Apple Silicon),Homebrew 前缀
/opt/homebrew - 已验证版本(2026-08):chezmoi v2.72 · zsh 5.9 · fzf 0.74.3 · starship 1.26 · Neovim 0.12
- 维护者:azwpayne
Apache-2.0 - See the LICENSE file for details.