1{2 lib,3 fleetLib,4 config,5 ...6}: let7 inherit (lib.attrsets) mapAttrs;8 inherit (lib.options) mkOption;9 inherit (lib.types) deferredModule deferredModuleWith;10 inherit (lib.modules) mkRemovedOptionModule;11 inherit (fleetLib.options) mkHostsOption;1213 _file = ./nixos.nix;14in {15 options = {16 nixos = mkOption {17 description = ''18 Nixos configuration for all hosts.19 '';20 type = deferredModule;21 };22 hosts = mkHostsOption (hostArgs: {23 inherit _file;24 options = {25 nixos = mkOption {26 description = ''27 Nixos configuration for the current host.28 '';29 type = deferredModuleWith {30 staticModules = import ../../nixos/modules/module-list.nix;31 };32 apply = module:33 config.nixpkgs.buildUsing.lib.nixosSystem {34 inherit (hostArgs.config) system;35 modules = [module];36 };37 };38 };39 config = {40 41 42 43 nixos = {44 imports = [45 config.nixos46 ];47 config._module.args.fleet = mapAttrs (_: value: value.nixos.config) config.hosts;48 };49 };50 });51 };52 imports = [53 (mkRemovedOptionModule ["nixosModules"] "replaced with nixos.imports.")54 ];55}