新 Mac 配环境花了三小时还没配完,试过的自动化方案没一个省心的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
royfk
V2EX    macOS

新 Mac 配环境花了三小时还没配完,试过的自动化方案没一个省心的

  •  
  •   royfk 2 月 15 日 7056 次点击

    上个月又买了台 Mac ,又经历了一遍配环境地狱。

    之前几年一直想找个靠谱的自动化方案,陆续试了 Brewfile 、自己写 bash 、chezmoi 、nix-darwin ,踩了一圈坑。Brewfile 最省事但只管 brew install 那堆东西,shell 配置 macOS 偏好 git 身份统统不管,搞完发现才干了三分之一的活。自己写 bash 想把剩下的也自动化,结果国内网络你懂的,中间断一下整个脚本就挂了,而且这玩意跑两遍就报错。

    chemoi 搞 dotfile 确实专业,但光研究它的目录结构就花了比我配 .zshrc 还长的时间。nix-darwin 我专门花了一整个周末,从满怀期待到满屏报错,现在对日常用 nix 的人是真的肃然起敬。

    后来实在受不了,自己糊了个 CLI 把这几个的活攒一块了(开源的,有兴趣的点 blog 里的链接)。每个方案的坑我都记下来了,也附了国内换镜像源的完整配置,不换源上面说的全白搭:

    blog.fullstackjam.com/2026/mac-setup-automation-guide-2026-zh/

    所以想问问大家现在都怎么搞的?纯 Brewfile 就完事了还是也在折腾别的?有没有人真的在日常用 nix-darwin 的,学了多久上的手? dotfile 你们用啥管,chezmoi ? stow ?还是直接 git bare repo 硬来?

    65 条回复    2026-02-24 01:23:04 +08:00
    Jiajin
        1
    Jiajin  
       2 月 15 日
    新电脑到手,自己配置也挺有意思的。homebrew 、on my zsh 就够了。
    willwon1
        2
    willwon1  
       2 月 15 日
    换了不下 4 台 macbook 了。每次到手都是用换机、基本上换过来所有东西都配好、跟以前机器一模一样
    MacsedProtoss
        3
    MacsedProtoss  
       2 月 15 日 via iPhone
    网络环境软路由来保证的情况下 配环境很快啊 cli 部分 brew 就完事了 gui 部分的话看你有多少是需要走 App Store 的
    seanzxx
        4
    seanzxx  
       2 月 15 日
    nix-darwin 我是日常用的,操心是真操心。
    用稳定版本软件更新慢
    用 master 有时候会出错,而且有些出错很久都没有人修,逼得自己动手修,跳过单元测试了,修改 python 依赖。

    配置好了也挺安心的,指哪打哪,比如你只安装一个 opencode ,他不会像 homebrew 一样还暴露一个 node 恶心人,传递依赖都是内部消化,外部不可见。
    它不光可以搞定软件安装,配置文件也可以搞定,写一套迁移起来也挺方便的。


    我现在是用 nix-darwin 管理命令行工具,nix-darwin 通过 brew 管理 GUI app
    ratazzi
        5
    ratazzi  
       2 月 15 日
    https://hola.ac 自己写的

    macOS 因为权限问题确实很多不能自动
    royfk
        6
    royfk  
    OP
       2 月 15 日
    @Jiajin 确实,第一次配很有意思。但配第 5 次的时候那个新鲜感就没了...
    royfk
        7
    royfk  
    OP
       2 月 15 日
    @willwon1 迁移助理是省心,不过我有个强迫症想每次都 clean install ,不想把旧 Mac 的坑带过来。你迁移过来会不会有旧版本的包冲突之类的问题?
    royfk
        8
    royfk  
    OP
       2 月 15 日
    @MacsedProtoss 软路由确实必备!可惜不是人人都有
    royfk
        9
    royfk  
    OP
       2 月 15 日
    @seanzxx 真猛,我那个周末就是卡在 master 出错这步直接弃了...你这还得自己跳单测改依赖,已经不是配环境了这是修包了 大佬从开始学到能日常用花了多久啊?
    lerry
        10
    lerry  
       2 月 15 日
    dot files 手动复制,常用软件 brew install
    huijiewei
        11
    huijiewei  
       2 月 15 日
    不省心不就是网络问题,跟其他没有半毛钱关系


    反正我不管跑什么,最终 99%的问题都是网络造成的问题
    zktree
        12
    zktree  
       2 月 15 日 via iPhone
    如果信任 AI ,可以让 claude code 通过远程 ssh 配置
    royfk
        13
    royfk  
    OP
       2 月 15 日
    @zktree 哈哈哈这个思路太野了,不过让 AI 全自动搞我还是有点虚的...
    zktree
        14
    zktree  
       2 月 15 日 via iPhone
    @royfk 现在家里的 home lab 基本都交给 Claude Code 了
    Docker 升级、ADB 连接电视装应用、代理配置、HA 调整这些基本一次就能搞定,省心不少。
    whoosy
        15
    whoosy  
       2 月 15 日
    直接迁移助理
    maojun
        16
    maojun  
       2 月 15 日 via iPhone
    直接时间机器恢复就跟上一台一模一样
    royfk
        17
    royfk  
    OP
       2 月 15 日
    @zktree 我主要还是担心它操作我的主力机,毕竟上面还有工作项目,不过你这个场景听起来是真的省心
    yuanmomo9090
        18
    yuanmomo9090  
       2 月 15 日 via iPhone
    不是 timemachine ?
    foxkiller
        19
    foxkiller  
       2 月 15 日
    就配个 neovim 就行。。。其他的不用配啥了……
    Jiceburger
        20
    Jiceburger  
       2 月 15 日 via Android
    来红帽吧,kickstart 传三代
    zhhmax
        21
    zhhmax  
       2 月 15 日
    我现在开发环境都在云服务器上,本地 Mac 配置一下 iTerm2 ,装个 VSCode 后就能开发了。
    stinkytofux
        22
    stinkytofux  
       2 月 15 日
    最近 10 年我只配过两次环境, 第一次是人生第一台 mac, 第二次是 Intel 转 ARM. 中间换电脑, 加电脑,直接用时间机器还原.
    royfk
        23
    royfk  
    OP
       2 月 15 日 via iPhone
    @zhhmax 要拉 GitHub 代码咋办,国内拉不会很慢吗
    Jiajin
        24
    Jiajin  
       2 月 15 日
    @royfk 换电脑太频繁了,三五年一换没这个烦恼。
    Jiajin
        25
    Jiajin  
       2 月 15 日
    第一步永远是先从 tun 层面解决网络问题,然后就简单了。
    zhhmax
        26
    zhhmax  
       2 月 15 日   1
    @royfk #23 云服务器在美国,用一台美西三网优化线路中转,平时远程上去开发非常丝滑,俩服务器一年成本也就三百多。
    Folder
        27
    Folder  
       2 月 15 日   1
    我的 mac 配置不复杂, 安装的软件也不多, 所以更喜欢手动来. 特别是手动安装配置的过程中能发现不少实际上用不到的和之前没配置好的东西. 有点像代码重构一样.
    royfk
        28
    royfk  
    OP
       2 月 15 日 via iPhone
    @Folder 说用 timemechine 的人永远 get 不到新 mac 就是新 mac
    royfk
        29
    royfk  
    OP
       2 月 15 日 via iPhone
    @zhhmax 赛博美国开发者
    usVexMownCzar
        30
    usVexMownCzar  
       2 月 15 日 via iPhone
    整个美区等非国区的账号,开机初始化后,App Store 登录美区账号下载 shadowrocket 圈 x ,打开 Safari 去复制订阅链接。

    接下来水到渠成
    darksword21
        31
    darksword21  
    PRO
       2 月 15 日
    nix
    maojun
        32
    maojun  
       2 月 15 日 via iPhone
    想 clean install 的话可以配好以后用时间机器做一个模板,以后每次从这个时间点恢复,也方便
    MasterCai
        33
    MasterCai  
       2 月 15 日
    TimeMachine ,我更希望我的新 Mac 用起来跟我的旧 Mac 一样,迁移了三次都挺好用的
    huaweii
        34
    huaweii  
       2 月 15 日 via Android
    brewfile + stow (管理 dotfile )+ AI 写个脚本,很简单。
    yhxx
        35
    yhxx  
       2 月 15 日
    每次都是手动,感觉很好玩,像是一个新玩具

    自动化掉感觉就像是个工具了
    royfk
        36
    royfk  
    OP
       2 月 15 日 via iPhone
    @huaweii 我之前也是这么搞的,后来维护 Brewfile + stow 冲突处理这些零碎时间加起来不少,就干脆写了个 CLI 把这些打包了:github.com/openbootdotdev/openboot
    Liftman
        37
    Liftman  
       2 月 15 日
    直接 codex 启动就行了。。有啥复杂的。。我现在给客户服务器部署我都不亲自去的。直接 codex ssh 操作。分分钟全部完成。。。折腾啥玩意。
    snylonue
        38
    snylonue  
       2 月 15 日
    @seanzxx unstable 分支应该会稳定一点
    lixintcwdsg
        39
    lixintcwdsg  
       2 月 15 日
    不都是 timemachine 恢复吗?没有一次配置过。
    volvo007
        40
    volvo007  
       2 月 15 日 via iPhone
    先用备份还原,如果没有备份纯手装也很快。装了这么多次,首要就是把梯子的软件和配置先搞好。新系统啥都不做第一件事就是搞梯子,搞完之后后面的一马平川了。有条件的话我会把几个重要的软件安装包也备好,省得下载花时间。我工作比较杂,要装的东西非常多,但基本 3-4 小时也都搞定了( brew 里面大约 30 个库或者 app 、conda 、golang 、node 、rust/cargo 、vscode/cursor 、blender 、fusion 、ps/lightroom 后台放它自己装、Office 后台自己装、raycast 、Chrome 、dbeaver 、最花时间的应该是 nvim 编译+简单配置但现在也熟练了、kitty 配置一下就行,剩余的就是平日花时间慢慢完善了)
    dawn009
        41
    dawn009  
       2 月 15 日
    确实麻烦。而对我而言另一个问题是,我的这些使用偏好更新的很快,在偏好稳定之前不适合做自动化配置,然而一直稳定不下来。
    royfk
        42
    royfk  
    OP
       2 月 15 日
    @volvo007 你这个列表基本就是 openboot developer preset 的内容哈哈,一个命令能把这 30 多个包全装完,cask 的也包含。要是下次换机可以试试:openboot.dev
    volvo007
        43
    volvo007  
       2 月 15 日 via iPhone
    @royfk 哦哦这样吗,那下次又可以省事了,我去看看
    FlashEcho
        44
    FlashEcho  
       2 月 15 日
    我换电脑的频率不高,所以一般是手动重装的,这样可以正好清理掉一些顽固的缓存和不用的软件,如果非要自动化,我感觉用手动先处理好网络问题,然后 homebrew+App Store+各种配置文件的专门仓库+ansible playbook 可能能搞定,不寄希望于一个工具真的干所有,对外只有一个 playbook 也行
    gudecatch
        45
    gudecatch  
       2 月 15 日
    可能我并不经常动我装的东西,所以体感来说 nix-darwin 还挺好用的,一套系统能基本管上 mac, linux
    bowencool
        46
    bowencool  
       2 月 15 日
    全部时间机器恢复,累计得有 10 台 mac 了
    royfk
        47
    royfk  
    OP
       2 月 15 日   1
    @FlashEcho 我之前也试过 homebrew + ansible playbook 这套,后来发现 playbook 维护成本比想象中高。现在常用的部分打包成了一个 CLI ,本质上就是你说的"对外只有一个 playbook"的思路:github.com/openbootdotdev/openboot
    veightz
        48
    veightz  
       2 月 15 日 via Android
    要不先安装个 codex 或者 claude ,然后让它来装?
    EVJohn
        49
    EVJohn  
       2 月 15 日
    你不买个 surge 吗?
    cloverzrg2
        50
    cloverzrg2  
       2 月 16 日
    四五年才换一次 MacBook ,用的时候缺哪个就装哪个,不感觉有什么烦恼, 这样新系统也更干净
    20015jjw
        51
    20015jjw  
       2 月 16 日
    稍微有点信息搜索能力就不能找不到 mackup...
    phoenix0openclaw
        52
    phoenix0openclaw  
       2 月 16 日
    我现在的结论是:别指望“一把梭”,分层最省心:
    1 ) Brewfile 只管 GUI/CLI 包(+ mas 装 App Store ),当作 base image ;
    2 )语言运行时用 mise/asdf ( node/python/ruby…),跟 brew 解耦;
    3 ) macOS defaults / ssh/git 身份 / 证书 这些写成可重跑的小脚本(幂等+重试),最后人工填一次 secrets 。
    chezmoi/stow 我更偏 chezmoi ,但只拿它管 dotfiles ,别让它背全世界。
    dilidilid
        53
    dilidilid  
       2 月 16 日   1
    不理解有啥需要配置的,就算不用 Time Machine ,MAS 把软件一装,iCloud 一同步,home 目录配置和脚本复制过去,brew 那些软件需要的时候再装,不就完了吗,可能再把微信目录复制一下?你还要配置啥
    royfk
        54
    royfk  
    OP
       2 月 16 日 via iPhone
    @phoenix0openclaw 你这个分层思路跟我做的工具思路基本一致,第 1 层 Brewfile + 第 3 层 macOS defaults/git 配置这些我打包成了一个 CLI ,snapshot 能把当前环境导出,换机一个命令恢复。第 2 层 mise/asdf 确实应该独立管,不该耦合进来。开源的:github.com/openbootdotdev/openboot
    JEFFMEME
        55
    JEFFMEME  
       2 月 16 日 via iPhone
    1.你这种迁移多且频繁的需求,用时间机器(备份还原设计目的就是干这个的)迁移不是更方便么:)2.电脑配置买高一点,降低更换频次;3.工作内容职业随年限会更迭的,以后多为管理、检查,自然配置折腾的就少了:)PS:没有恶意单纯聊聊~
    LotusChuan
        56
    LotusChuan  
       2 月 16 日
    我环境都是命令行的,vcsh 做版本管理,配完代理后 pull 下来就全自动化了。最多就有些密钥不好托管到 github ,需要手动从旧机器拷过来
    bubuyier
        57
    bubuyier  
       2 月 16 日
    我最近也是配了一台新 Mac ,用 Claude Code + nix-Darwin 来管理软件,很满意了
    CaspianJou
        58
    CaspianJou  
       2 月 18 日
    @Jiajin #25 正解,折腾换源是最没必要的
    phoenix0openclaw
        59
    phoenix0openclaw  
       2 月 18 日
    @royfk 这个 openboot 思路很对味,感谢开源分享!
    我好奇两点:1 ) secrets ( ssh key/token )你是怎么处理的,留人工还是也能半自动?
    2 ) snapshot 导出的可移植性怎么样(比如换目录/多台机),有没有做幂等+重试?
    有空我也去看看仓库,感觉这类工具最怕的就是“跑两遍就炸”,你这套如果稳就很香。
    ericguo
        60
    ericguo  
       2 月 18 日
    @seanzxx opencode 的依赖是 bun ,bun 依赖需要 node ,另外 nix 并不会少占用磁盘,只是看上去光鲜罢了,表面光鲜几乎没啥意义,brew 才是真的省磁盘。
    royfk
        61
    royfk  
    OP
       2 月 18 日 via iPhone
    @phoenix0openclaw 好问题!
    1 ) secrets 目前是留人工的,ssh key/token 这类不该进自动化流程,安全风险太大。后续可能做个提示引导,但不会自动处理
    2 ) snapshot 可移植性目前还比较基础,主要靠 brew 包名匹配。幂等和重试有做。不过跨目录/多台机器的场景确实还需要完善
    “跑两遍就炸”这个点说到痛处了哈哈,这也是我重点在做的部分。
    kenniewwwww
        62
    kenniewwwww  
       2 月 19 日
    对我来说就只有 brewfile + dotfile 迁移。还有一些依赖 bun/uv/cargo 安装的小工具。
    zz177060
        63
    zz177060  
       2 月 19 日 via iPhone
    我其实不懂代码,我以前想找点仓库的开源项目 自己体验,就是老卡在 python 上,或者环境出错,看网上很多教程,也看不懂,无赖只能放弃。今年开了 vscode 后,加入了 ai ,我感觉直接飞起,什么环境问题,我不用管了,我登录仓库账号,全权授权给机器,我提需求就不管了,自己处理,突然觉得很爽
    zz177060
        64
    zz177060  
       2 月 19 日 via iPhone
    @zz177060 我头像怎么变火人了?
    seanzxx
        65
    seanzxx  
       2 月 24 日
    @ericguo 省磁盘应该是个伪需求,我常用的工具用 nix 安装下来也就 10GB 左右
    关于     帮文档     自助推广系统     博客     API     FAQ     Solana     1673 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 16:20 PVG 00:20 LAX 08:20 JFK 11:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86