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