macOS as Code! 一份易于理解的 nix-darwin 初始配置模板,专为新手制作

2023-07-20 14:13:11 +08:00
 ryan4yin

分享一个我昨天整的 macOS 系统配置管理方案,基于 Nix 包管理器 + nix-darwin + homebrew.

https://github.com/ryan4yin/nix-darwin-kickstarter

它有啥好处? 比如启用指纹验证 sudo 指令,只需要加一行配置。 还有各种 dock finder trakpad keyboard 的配置,也完全代码化了,可一键部署。 homebrew 的安装包、App Store 的应用程序列表,也全都可以写进来,用 nix 管理。

这套我自己已经用了大半个月了,觉得不错所以搞了个模板仓库分享下. 因为貌似国外的受众更多些,目前只写了点英文的文档。

我也在推特上发了一些示例截图:

https://twitter.com/ryan4yin/status/1681639068957028352/photo/1

2149 次点击
所在节点    macOS
7 条回复
darksword21
2023-07-20 14:18:50 +08:00
我也分享下我自己的配置 https://github.com/404cn/dotfiles

包含 nix ,nixos 和 mac 的配置
ZedRover
2023-07-21 09:33:20 +08:00
感谢 Thanks♪(・ω・)ノ
ZedRover
2023-07-24 17:33:59 +08:00
想问一下使用 home-manager 管理 brew 的包感觉会存在一个问题就是之前卸载 formulae 的时候我会使用 brew rmtree 来卸载尽量把依赖项卸载掉,现在使用 home-manager 管理的时候只能通过修改 nix 文件来删除包,那么添加新的包或者删除包的时候那些依赖项是如何处理的呢?
ZedRover
2023-07-24 17:45:11 +08:00
@ZedRover #3 自己试了一下发现 zap 模式下把依赖项注释掉后 rebuild 不会删除依赖项,但这不是也没法解决 remove 包时候的依赖问题嘛反而会留下更多的依赖包
ryan4yin
2023-07-24 19:34:38 +08:00
@ZedRover 可以举个例子么?我之前测试记得是所有依赖也被清理掉了的。
zap 的逻辑应该是删除所有不在 Brewfile 里的包,而这个生成的 Brewfile 应该只包含声明的软件以及必要的依赖项。
ZedRover
2023-07-25 09:16:08 +08:00
@ryan4yin 因为我是直接把原来 brew 里的包全都直接 list 到了 brews=[]里面,然后在我直接 brews 中删除某个包之后运行 brew autoremove ,homebrew 会自动卸载三四个包,但是这三四个包还会出现在 brews 里面;之后我直接在 brews 手动删除掉了这几个包再 rebuild 的
ryan4yin
2023-07-25 09:23:59 +08:00
@ZedRover 那是你用法有问题,你 brews 声明了要这个依赖,它自然不会被清理掉。

我的做法是只往 brews 里加我需要的包,依赖应该由 homebrew 自动处理,不要写进来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958299

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX