nix - 覆盖 Nix 中的服务定义?
问题描述
我正在 NixOps 中编写部署定义。作为该定义的一部分,我需要修改由<nixpkgs>
.
我无法配置服务来做我想做的事。因为服务定义本身定义了一些我需要修改的派生,所以我不能只添加我自己的派生。我能看到的唯一解决方案是覆盖服务定义本身,在修补的副本中出售。
但如果我只是尝试
options.services.<myservice> = ... # new service definition
Nix 抱怨说我正在重新定义所有服务选项。
如果我做
options.services.<myservice>.override = ...
然后对服务定义的更改不会反映在我
services.<myservice>
以后的使用中(具体来说,我定义了新选项,但它们不能使用)。
我怎样才能真正告诉 Nix 我想要覆盖服务定义,以便我可以在我自己的服务版本中供应商?
动机
提供的 Grafana 服务nixpkgs
不完整。您不能提供通知器,并且因为服务定义控制提供,所以您不能手动修改文件系统 - 您必须控制提供的派生。
有一个PR 可以解决这个问题,但它需要一段时间才能合并。同时,我想在本地使用 PR 中的版本。
解决方案
You can use disabledModules to achieve this.
It will look like
{
disabledModules = [ "services/monitoring/grafana.nix" ];
imports = [
./my-modules/grafana.nix
];
}
推荐阅读
- c# - 使用“TAP”设计模式执行许多长时间运行的任务
- sql - 在 WHERE 子句中使用短路会提高速度吗
- spring - 如何在spring boot的主项目(有两个依赖项目)中使用message.properties文件?
- sql - 一行代码中断否则工作查询
- python - 在python中按多个键对字典进行分组
- python - 使用python将IR图像转换为RGB
- android - 如何快速检查非法字符。(Windows、Android 和 IOS 的非法字符)
- angular - 带有异步管道的角度多/选择
- android - 片段中的 ViewModelProvider 使用什么 ViewModelStoreOwner?
- c - sigsetjmp() 返回值有什么用?