Введение в модули Denix
Модуль Denix - это тот же самый модуль NixOS или Home Manager, но его attribute set обёрнут в функцию delib.module
.
Отсутствие ограничений
Это означает, что вы можете использовать все три варианта модулей одновременно, хотя маловероятно, что вам понадобятся другие варианты, кроме первого:
Denix модуль
nix
{delib, ...}:
delib.module {
name = "...";
}
Denix модуль, дополненный NixOS/Home Manager модулем
nix
{delib, ...}:
delib.module {
name = "...";
} // {
}
Только NixOS/Home Manager модуль
nix
{
}
Простота и чистота
Модули Denix в большинстве случаев выглядят проще и чище, чем модули NixOS/Home Manager, по следующим причинам:
- Простое, но при этом полноценное декларирование опций (см. Опции).
- Встроенная логика разделения конфигураций в зависимости от значения опции
${delib.module :: name}.enable
: always, ifEnabled, ifDisabled. - Общие опции, но разделённые конфигурации для NixOS, Home Manager и собственных опций.