Как изменить serviceConfig службы, определенной в nixpkgs, из configuration.nix? - PullRequest
0 голосов
/ 04 июня 2018

nagios в nixpkgs имеет systemd.services.nagios.serviceConfig.Restart="always";, который загромождает журнал journalctl -u nagios и должен быть Restart = "no";вместо этого!

Исправление MySQL

Для MySQL это работает:

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

Поскольку служба MySQL не выводит список «Restart», «RestartSec» или «StartLimitInterval 'Я полагаю.

Попытка исправить nagios

Используя тот же механизм для nagios, что и для MySQL ранее, я пытаюсь:

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 голосов
/ 09 июня 2018

оказывается, это была ошибка в nixpkgs, см. https://github.com/NixOS/nixpkgs/pull/41446

0 голосов
/ 08 июня 2018

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";};В результате значения в 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";};Дайте мне:

Ошибка переключателя nixos-rebuild: обнаружена бесконечная рекурсия, по адресу /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/lib/attrsets.nix:199:44

  • Это потому, что вы определяете значение serviceConfig как значение serviceConfig, которое является бесконечной рекурсией!
...