最近做了一个实现了一个基于 Nix 的 OpenCore 管理框架,名为 oceanix.
主要功能有:
- 根据 Sample.plist 自动设置 defaults oceanix 会读取对应版本的 OpenCore 的 Sample.plist 并以此补全合适的 section 作为 defaults 。这样配置时只需要编写 dortania guide 说明需要修改的部分来覆盖 defaults 即可。此外,在 OpenCore 更新时,这些 defaults 也会自动更新,所以在更新 OpenCore 时用户基本不需要干预。
- 可编程的配置 因为 oceanix 基于 Nix, 所以你可以实现在配置里写函数,写注释,分离配置等操作。比如你可以抽离敏感部分并加密,也可以根据本地环境不同自动更改配置。
- 包管理 Oceanix 对常用的 Kexts, Drivers 等做了打包,因此你可以非常方便的引入 Kexts ,而不需要下载解压复制等操作。此外,升级 /降级 Kexts 也异常简单,只需要修改一下需要引入的包名即可。
- 依赖解析 Oceanix 会自动引入 Kexts, Drivers, ACPI patches 并对 Kexts 做依赖解析来保证导入顺序的正确性。你也可以非常方便的启用 /关闭某个 Kexts 和其所有子插件。
- 可重现 基于 Nix, oceanix 可以 bit-by-bit 地保证你的 EFI 可重现性。
未来可能会支持:
- 自动 ocvalidate ,保证每次配置修改都是正确可靠的
- 自动进行 OC vaulting 来签名并保证配置的 integrity
最后,这是我基于 oceanix 的 OpenCore 配置: https://github.com/LEXUGE/opencore-cfg
项目还在非常初期阶段,文档不完善也可能有一些 Bugs ,如果你使用 Nix 并对 OpenCore 感兴趣,或是 OpenCore 用户但未接触过 Nix ,不妨来尝试一下