Skip to content

Распространённые ошибки

В этом разделе перечислены некоторые распространённые ошибки и их возможные решения.

Условные импорты

Если по какой-либо причине необходимо выполнить импорт внутри модуля Denix, то попытка задать [nixos|home].[ifEnabled|ifDisabled].imports вызовет ошибку infinite recursion.

Это означает, что если вам нужно импортировать, например, стороннюю библиотеку, следует сначала добавить её в [nixos|home].always.imports, а затем, при необходимости, задавать значения опций в [nixos|home].[always|ifEnabled|ifDisabled].

Обсуждение "Conditional module imports": discourse.nixos.org

Ошибочный код

nix
{delib, ...}:
delib.module {
  name = "wrong";
  options = delib.singleEnableOption true;

  nixos.ifEnabled = {
    imports = [<someModule>];

    someModuleOptions.enable = true;
  };
}

Правильный код

nix
{delib, ...}:
delib.module {
  name = "correct";
  options = delib.singleEnableOption true;

  nixos.always.imports = [<someModule>];

  nixos.ifEnabled.someModuleOptions.enable = true;
}