自动化 Mac 设置的所有方法,按你将编写的 YAML 量排名
Source: Dev.to
问题
我已经装配了比我愿意承认的更多的 Mac——个人机器、工作笔记本、借用的电脑,甚至还有一次凌晨 2 点因为我的 Python 环境彻底崩溃而怒刷硬盘。
每次都是同样的情形:
- 打开 Terminal → 荒漠。没有
git,没有node,没有docker。 - Finder 隐藏文件扩展名。
- Dock 自动隐藏需要很长时间。
- 所有别名都不见了。
两小时的 brew install 之后,你可能只恢复了一半的工具。一个星期后你发现忘了装 jq。两星期后,你在新工作中的每一次提交都显示 “unknown”,因为你从未设置 Git 邮箱。
我尝试了各种层级的自动化来解决这个问题。以下是我的发现。
你的配置比想象的更庞大
我曾经统计过——83 项,分布在 8 类:
| 类别 | 示例 |
|---|---|
| 包管理器 | Homebrew(永远是第一步) |
| CLI 工具 (30+) | ripgrep, fd, fzf, bat, eza, lazygit, gh, jq, delta, zoxide… |
| GUI 应用 (15+) | VS Code、Warp、Raycast、Rectangle、OrbStack、Chrome、Arc… |
| 语言与运行时 | Node、Go、Python、Rust,以及 pnpm/uv/cargo |
| Shell | Oh‑My‑Zsh、Starship、插件、你的 .zshrc |
| Dotfiles | .gitconfig、.vimrc、.ssh/config |
| Git 身份 | 每个人每次都会忘记的两行配置 |
| macOS 偏好设置 | 用于 Dock 速度、Finder、键重复的 defaults write 命令 |
如果你认为自己的配置只是 “Homebrew 和 VS Code”,那你大约少算了 70 %。
Source: …
自动化选项
1. Brewfile
最简方案。 Homebrew 已经内置了此功能。
# 导出
brew bundle dump --file=~/Brewfile
# 恢复
brew bundle --file=~/Brewfile
我使用 Brewfile 大约一年——零依赖,易读,只需把它放进仓库就完成了。
局限性: 只处理 Homebrew 软件包。没有 shell 配置、macOS 偏好设置或 Git 身份信息。只能自动化大约 30 % 的工作。
2. Shell 脚本
进阶方案。 编写一个 Bash 脚本来完成所有操作。
#!/usr/bin/env bash
set -euo pipefail
# 软件包
brew install ripgrep fd bat fzf node go lazygit gh
brew install --cask visual-studio-code warp raycast
# macOS 偏好设置
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
defaults write com.apple.dock autohide-delay -float 0
# Git 身份
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
优点: 覆盖面更广。
缺点: 更容易出错。网络波动可能导致脚本半途而废;重新运行会出现 “already installed” 警告;Oh‑My‑Zsh 可能报错,Git 配置会覆盖已有值。
Reddit 上有人给出 200 行 的版本,证明了这一点:如果你需要这么多行 Bash 来配置一台笔记本,Bash 可能不是合适的工具。
3. chezmoi
一个点文件管理器,可对配置文件进行模板化,使同一仓库在多台机器上工作,并能加密机密信息。
chezmoi init --apply your-github-username
优点: 适合多台机器/多操作系统;优雅地管理点文件。
缺点: 不负责软件安装——仍需配合 Brewfile。学习曲线比单纯脚本高;我花的时间更多在学习其目录约定,而不是实际配置点文件。
4. nix-darwin
核弹选项。 为整台 Mac 提供完整的声明式配置。
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
ripgrep fd bat fzf nodejs go
];
homebrew.casks = [
"visual-studio-code"
"warp"
];
system.defaults.dock.autohide = true;
}
优点: 优雅、单一真相来源、内置回滚。
缺点: 学习曲线陡峭;需要了解 Nix 语言、包管理器及其哲学。我在 Nix 论坛上花了一个周末才让自己的 shell 正常加载。
适合对象: 已经在 Nix 生态系统中的人。
如果你是新人: 需要 1–2 周 的时间才能看到收益。
5. Ansible
Jeff Geerling 的 mac‑dev‑playbook 是流行的 Ansible 方案。
- 优点: 幂等,适合大规模使用。
- 缺点: 为个人笔记本写企业级 YAML 来安装 VS Code 感觉很荒唐。playbook 失败时,错误信息看起来像服务器日志。
适合对象: 500 + 台企业笔记本。
对单个开发者来说: 过度使用。
对比表
| 功能 / 工具 | Brewfile | Shell script | chezmoi | nix-darwin | Ansible |
|---|---|---|---|---|---|
| 软件包 | ✅ | ✅ | ❌ | ✅ | ✅ |
| 图形界面应用 | ✅ | ✅ | ❌ | ✅ | ✅ |
| Shell 配置 | ❌ | DIY | ✅ | ✅ | DIY |
| macOS 偏好设置 | ❌ | DIY | ❌ | ✅ | ✅ |
| 点文件 | ❌ | DIY | ✅ | ✅ | DIY |
| 回滚 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 幂等 | ✅ | ❌ | ✅ | ✅ | ✅ |
| 学习曲线 | 5 min | 10 min | 1 hour | 1–2 weeks | 2–3 hours |
| 覆盖率 | ~30 % | ~70 % | ~20 % | ~90 % | ~70 % |
没有单一工具能够覆盖所有需求。大多数人最终会组合使用两到三个工具。
我的方案:OpenBoot
我厌倦了切换各种工具,于是构建了 OpenBoot —— 一个处理以下内容的 TUI:
- 软件包(Homebrew)
- GUI 应用
- Shell 配置
- macOS 偏好设置
- Git 身份
当然,这带有偏见,但上面的比较显示了它的定位。
2026 CLI 工具包
这些工具在我看到的每个环境中都会出现:
| 类别 | 工具 |
|---|---|
| 搜索 / 导航 | ripgrep, fd, fzf, zoxide |
| 文件查看 | bat, eza |
| JSON | jq |
| Git | delta, lazygit |
| 其他 | gh(GitHub CLI),lazygit(交互式 rebase) |
如果你从头开始构建一台新的 Mac,请确保将它们加入你的 Brewfile(或等价文件)——它们能为你节省无数时间。
2026 年 GUI 推荐
VS Code 在插件方面仍然是冠军。Cursor 是第一个真的让我想换编辑器的。
- Warp – 终端
- Raycast – 超越 Alfred(仅剪贴板历史就已经足够)
- Rectangle – 窗口管理,免费
OrbStack 取代了 Docker Desktop,我的粉丝们也安静了。如果你仍在使用 Docker Desktop,试试它吧。
新的值得坚持的工具
- Ghostty – 超快的原生终端
- Zed – 处理超大文件的利器
- Ollama – 机上使用的本地大语言模型
- uv – Python 终于有了合理的包管理器
- Bun – 替代 Node 用于一次性脚本
你的配置是怎样的?我想知道有多少人真的在日常使用 nix-darwin,而不是仅仅使用 Brewfile。还有人还在使用 mackup 吗,还是大家都已经转向别的方案了?
完整版包含更多代码示例和详细步骤指南:
blog.fullstackjam.com/2026/mac-setup-automation-guide-2026