【问题标题】:Override a service definition in Nix?覆盖 Nix 中的服务定义?
【发布时间】:2021-01-27 17:04:14
【问题描述】:

我正在 NixOps 中编写部署定义。作为该定义的一部分,我需要修改<nixpkgs> 提供的现有服务定义。

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

但如果我只是尝试

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

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

如果我这样做

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

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

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

动机

nixpkgs提供的Grafana服务不完整。你不能provision notifiers,因为service definition controls provisioning,你不能手动修改文件系统——你必须控制the provisioning derivation

有一个PR to fix this,但需要一段时间才能合并。同时,我想在本地使用 PR 的版本。

【问题讨论】:

    标签: nix nixops


    【解决方案1】:

    您可以使用disabledModules 来实现此目的。

    看起来像

    {
      disabledModules = [ "services/monitoring/grafana.nix" ];
    
      imports = [
        ./my-modules/grafana.nix
      ];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多