Структура
Аргументы функции
name
: строка, представляющая имя райса.inherits
: список строк - имена райсов, чьи конфигурации будут унаследованы текущим райсом.inheritanceOnly
: булевое значение (true
илиfalse
), которое определяет, будет ли этот райс добавлен в список систем, сгенерированный для каждого хоста и райса, или же он используется только для наследования.myconfig
: устанавливает её значение вconfig.${myconfigName}
, еслиconfig.${myconfigName}.rice
соответствует текущему райсу.nixos
: устанавливает её значение вconfig
, еслиisHomeManager
равенfalse
иconfig.${myconfigName}.rice
соответствует текущему райсу.home
: устанавливает её значение вconfig
, еслиisHomeManager
равенtrue
иconfig.${myconfigName}.rice
соответствует текущему райсу. В противном случае, еслиconfig.${myconfigName}.rice
соответствует текущему райсу, устанавливает её значение вconfig.home-manager.users.${homeManagerUser}
.
Передаваемые аргументы
Список аргументов, которые передаются в [myconfig|nixos|home]
, если их тип - lambda
:
name
: тот жеname
, что и в аргументахdelib.rice
.myconfig
: равенconfig.${myConfigName}
.cfg
: равенconfig.${myConfigName}.rices.${delib.rice :: name}
.
Псевдокод
nix
delib.rice {
name = "";
inherits = [];
inheritanceOnly = [];
# если config.${myconfigName}.rice == name
# то {config.${myConfigName} = ...;}
# иначе {}
myconfig = {name, cfg, myconfig, ...}: {};
# если config.${myconfigName}.rice == name
# то {config = ...;}
# иначе {}
nixos = {name, cfg, myconfig, ...}: {};
# если config.${myconfigName}.rice == name, то
# если isHomeManager
# то {config = ...;}
# иначе {config.home-manager.users.${homeManagerUser} = ...;}
# иначе {}
home = {name, cfg, myconfig, ...}: {};
}