1

我正在 NixOps 中编写部署定义。作为该定义的一部分,我需要修改由<nixpkgs>.

无法配置服务来做我想做的事。因为服务定义本身定义了一些我需要修改的派生,所以我不能只添加我自己的派生。我能看到的唯一解决方案是覆盖服务定义本身,在修补的副本中出售。

但如果我只是尝试

options.services.<myservice> = ... # new service definition

Nix 抱怨说我正在重新定义所有服务选项。

如果我做

options.services.<myservice>.override = ...

然后对服务定义的更改不会反映在我 services.<myservice>以后的使用中(具体来说,我定义了新选项,但它们不能使用)。

我怎样才能真正告诉 Nix 我想​​要覆盖服务定义,以便我可以在我自己的服务版本中供应商?

动机

提供的 Grafana 服务nixpkgs不完整。您不能提供通知器,并且因为服务定义控制提供,所以您不能手动修改文件系统 - 您必须控制提供的派生

有一个PR 可以解决这个问题,但它需要一段时间才能合并。同时,我想在本地使用 PR 中的版本。

4

1 回答 1

2

You can use disabledModules to achieve this.

It will look like

{
  disabledModules = [ "services/monitoring/grafana.nix" ];

  imports = [
    ./my-modules/grafana.nix
  ];
}
于 2021-01-27T21:41:51.727 回答