如何从configuration.nix更改nixpkgs中定义的服务的serviceConfig?

时间:2018-06-04 10:37:16

标签: nixos nixpkgs

nixpkgs中的nagios有systemd.services.nagios.serviceConfig.Restart="always";,它使journalctl -u nagios日志混乱,应该是Restart =" no&#34 ;;代替!

MySQL修复

对于MySQL,这有效:

systemd.services.mysql.serviceConfig = {
  Restart = "always";
  RestartSec="10s";
  StartLimitInterval="1min";
};

由于MySQL服务未列出任何“重新启动”,“重新启动”,“启动限制”和“启动限制”等任何内容。我想。

尝试了nagios修复

使用与之前相同的nagios机制,我尝试:

systemd.services.nagios.serviceConfig.Restart = "no";

给我一​​个:

error: The option `systemd.services.nagios.serviceConfigRestart' defined in `/etc/nixos/configuration.nix' does not exist.
(use ‘--show-trace’ to show detailed location information)

如果我将其更新为:

systemd.services.nagios.serviceConfig = lib.mkForce { Restart = "no"; };

结果是systemd.services.mysql.serviceConfig中的值现在只包含'重新启动'但缺乏重要的ExecStart'和其他服务定义:

journalctl -u nagios
nagios.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

最后使用这个:

systemd.services.nagios.serviceConfig = config.systemd.services.nagios.serviceConfig // { Restart = "no"; };

给我一​​个:

nixos-rebuild switch
error: infinite recursion encountered, at /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/lib/attrsets.nix:199:44
(use ‘--show-trace’ to show detailed location information)

2 个答案:

答案 0 :(得分:0)

  

systemd.services.nagios.serviceConfig.Restart = "no";

  • 应该工作
  

错误:选项systemd.services.nagios.serviceConfigRestart' defined in / etc / nixos / configuration.nix'不存在。   (使用'--show-trace'显示详细的位置信息)

  • 建议您不小心忽略了.
  • 中的serviceConfig.Restart

如果有任何用处,可以进一步解释:

  

systemd.services.nagios.serviceConfig = lib.mkForce {Restart =" no&#34 ;;   };结果就是中的值   systemd.services.mysql.serviceConfig现在只包含' Restart'   但缺乏重要的ExecStart'和其他服务定义:

     

journalctl -u nagios nagios.service:服务缺少ExecStart =和   ExecStop =设置。拒

  • 是因为您被迫替换serviceConfig
  

最后使用这个:

     

systemd.services.nagios.serviceConfig =   config.systemd.services.nagios.serviceConfig // {Restart =" no&#34 ;; };   给我一个:

     

nixos-rebuild switch错误:遇到无限递归,at   /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/lib/attrsets.nix:199:44

  • 是因为您将serviceConfig的值定义为serviceConfig的值,这是一个无限递归!

答案 1 :(得分:0)

结果证明,这是nixpkgs中的一个错误,请参阅https://github.com/NixOS/nixpkgs/pull/41446