Структура
Аргументы функции
myconfigName(string): категория для всех опций модулей Denix, хостов и райсов. По умолчаниюmyconfig; изменять не рекомендуется.denixLibName(string): имя библиотеки Denix вspecialArgs({denixLibName, ...}: denixLibName.module { ... }). По умолчаниюdelib; изменять не рекомендуется.extensions(listOf delib.extension): список расширений, которые будут применены к конфигурации. По умолчанию[].nixpkgs(nixpkgs): используется для переопределения nixpkgs в вашей конфигурации, аналогичноinputs.denix.inputs.nixpkgs.follows. По умолчаниюinputs.nixpkgs.home-manager(home-manager): используется для переопределения home-manager в вашей конфигурации, аналогичноinputs.denix.inputs.home-manager.follows. По умолчаниюinputs.home-manager.nix-darwin(nix-darwin): используется для переопределения nix-darwin в вашей конфигурации, аналогичноinputs.denix.inputs.nix-darwin.follows. По умолчаниюinputs.nix-darwin.homeManagerNixpkgs(nixpkgs): используется в атрибутеpkgsфункцииhome-manager.lib.homeManagerConfigurationв формате:homeManagerNixpkgs.legacyPackages.${host :: homeManagerSystem}. По умолчанию используетсяnixpkgsиз аргументов этой функции.useHomeManagerModule(boolean): добавлять ли модуль Home Manager в конфигурации NixOS и Nix-Darwin. По умолчаниюtrue; значение можно переопределить в каждом хосте черезdelib.host :: useHomeManagerModule.homeManagerUser(string): имя пользователя, используется вhome-manager.users.${homeManagerUser}и для генерации списка конфигураций Home Manager. Значение можно переопределить в каждом хосте черезdelib.host :: homeManagerUser.moduleSystem("nixos","home"и"darwin"): указывает, для какой модульной системы должен быть создан список конфигураций - NixOS, Home Manager или Nix-Darwin.paths(listOf string): пути, которые будут импортированы; добавьте сюда хосты, райсы и модули. По умолчанию[].exclude(listOf string): пути, которые будут исключены из импортирования. По умолчанию[].recursive(boolean): определяет, следует ли рекурсивно искать пути для импортирования. По умолчаниюtrue.specialArgs(attrset):specialArgs, которые будут переданы вlib.nixosSystem,home-manager.lib.homeManagerConfigurationиnix-darwin.lib.darwinSystem. По умолчанию{}.- EXPERIMENTAL
extraModules(list): по умолчанию[]. - EXPERIMENTAL
mkConfigurationsSystemExtraModule(attrset): модуль, используемый во внутренней конфигурации NixOS, который получает список хостов и райсов для генерации списка конфигураций. По умолчанию{nixpkgs.hostPlatform = "x86_64-linux";}.
Псевдокод
nix
delib.configurations rec {
myconfigName = "myconfig";
denixLibName = "delib";
extensions = with delib.extensions; [];
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
nix-darwin = inputs.nix-darwin;
homeManagerNixpkgs = nixpkgs;
useHomeManagerModule = true;
homeManagerUser = "sjohn";
moduleSystem = "nixos";
paths = [./modules ./hosts ./rices];
exclude = [./modules/deprecated];
recursive = true;
specialArgs = {
inherit inputs;
};
}