1{crane}: {2 fleetLib,3 lib,4 config,5 ...6}: let7 inherit (lib.options) mkOption;8 inherit (lib.attrsets) mapAttrs;9 inherit (lib.types) lazyAttrsOf deferredModule unspecified;10 inherit (fleetLib.options) mkHostsOption;11in {12 options.fleetModules = mkOption {13 type = lazyAttrsOf unspecified;14 default = {};15 };16 options.fleetConfigurations = mkOption {17 type = lazyAttrsOf deferredModule;18 apply = nameToModule:19 mapAttrs (20 name: module: data: let21 22 23 bootstrapEval = lib.evalModules {24 modules = [25 module26 {27 options.nixpkgs.buildUsing = mkOption {28 description = ''29 Nixpkgs to use for fleetConfiguration evaluation.30 '';31 };32 config._module.check = false;33 }34 ];35 };36 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;37 normalEval = bootstrapNixpkgs.lib.evalModules {38 modules =39 (import ../modules/fleet/_modules.nix)40 ++ [41 data42 module43 {44 options.hosts = mkHostsOption {45 nixos.nixpkgs.overlays = [46 (final: prev: {47 48 craneLib = crane.mkLib prev;49 })50 ];51 };52 }53 ];54 specialArgs.fleetLib = import ../lib {55 inherit (bootstrapNixpkgs) lib;56 };57 };58 in59 normalEval60 )61 nameToModule;62 };63 config = {64 _module.args.fleetLib = import ../lib {inherit lib;};65 flake.fleetConfigurations = config.fleetConfigurations;66 flake.fleetModules = config.fleetModules;67 };6869 _file = ./flakePart.nix;70}