Структура
Аргументы функции
name
: строка, представляющая имя хоста.homeManagerSystem
: строка, используемая в атрибутеpkgs
функцииhome-manager.lib.homeManagerConfiguration
, которая используется в функцииdelib.configurations
в видеhomeManagerNixpkgs.legacyPackages.${homeManagerSystem}
.myconfig
: устанавливает её значение вconfig.${myconfigName}
, еслиconfig.${myconfigName}.host
соответствует текущему хосту.nixos
: устанавливает её значение вconfig
, еслиisHomeManager
равенfalse
иconfig.${myconfigName}.host
соответствует текущему хосту.home
: устанавливает её значение вconfig
, еслиisHomeManager
равенtrue
иconfig.${myconfigName}.host
соответствует текущему хосту. В противном случае, еслиconfig.${myconfigName}.host
соответствует текущему хосту, устанавливает её значение вconfig.home-manager.users.${homeManagerUser}
.shared.myconfig
: устанавливает её значение вconfig.${myconfigName}
для всех хостов.shared.nixos
: устанавливает её значение вconfig
, еслиisHomeManager
равенfalse
. В противном случае, не выполняется.shared.home
: устанавливает её значение вconfig
, еслиisHomeManager
равенtrue
. В противном случае, устанавливает вconfig.home-manager.users.${homeManagerUser}
.
Передаваемые аргументы
Список аргументов, которые передаются в ?(shared.)[myconfig|nixos|home]
, если их тип - lambda
:
name
: тот жеname
, что и в аргументахdelib.host
.myconfig
: равенconfig.${myConfigName}
.cfg
: равенconfig.${myConfigName}.hosts.${delib.host :: name}
.
Псевдокод
nix
delib.host {
name = "";
# homeManagerNixpkgs.legacyPackages.${homeManagerSystem}
homeManagerSystem = "x86_64-linux";
# если config.${myconfigName}.host == name
# то {config.${myConfigName} = ...;}
# иначе {}
myconfig = {name, cfg, myconfig, ...}: {};
# если config.${myconfigName}.host == name
# то {config = ...;}
# иначе {}
nixos = {name, cfg, myconfig, ...}: {};
# если config.${myconfigName}.host == name, то
# если isHomeManager
# то {config = ...;}
# иначе {config.home-manager.users.${homeManagerUser} = ...;}
# иначе {}
home = {name, cfg, myconfig, ...}: {};
# config.${myConfigName} = ...
shared.myconfig = {name, cfg, myconfig, ...}: {};
# config = ...
shared.nixos = {name, cfg, myconfig, ...}: {};
# если isHomeManager
# то {}
# иначе {config = ...;}
shared.home = {name, cfg, myconfig, ...}: {};
}