1{crane}: {2 fleetLib,3 lib,4 config,5 inputs ? {},6 ...7}: let8 inherit (lib.options) mkOption;9 inherit (lib.attrsets) mapAttrs;10 inherit (lib.types) lazyAttrsOf deferredModule unspecified;11 inherit (lib.strings) isPath;12 inherit (fleetLib.options) mkHostsOption;13in {14 options.fleetModules = mkOption {15 type = lazyAttrsOf unspecified;16 default = {};17 };18 options.fleetConfigurations = mkOption {19 type = lazyAttrsOf deferredModule;20 apply = nameToModule:21 mapAttrs (22 name: module: data: let23 24 25 bootstrapEval = lib.evalModules {26 modules = [27 module28 {29 options.nixpkgs.buildUsing = mkOption {30 description = ''31 Nixpkgs to use for fleetConfiguration evaluation.32 '';33 };34 config._module.check = false;35 }36 ];37 };38 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;39 normalEval = bootstrapNixpkgs.lib.evalModules {40 modules =41 (import ../modules/module-list.nix)42 ++ [43 module44 {45 options.hosts = mkHostsOption {46 nixos.nixpkgs.overlays = [47 (final: prev:48 import ../pkgs {49 inherit (prev) callPackage;50 craneLib = crane.mkLib prev;51 })52 ];53 };54 config = {55 data =56 if isPath data57 then import data58 else data;59 };60 }61 ];62 specialArgs = {63 fleetLib = import ../lib {64 inherit (bootstrapNixpkgs) lib;65 };66 inputs = inputs;67 };68 };69 in70 normalEval71 )72 nameToModule;73 };74 config = {75 _module.args.fleetLib = import ../lib {inherit lib;};76 flake.fleetConfigurations = config.fleetConfigurations;77 flake.fleetModules = config.fleetModules;78 };7980 _file = ./flakePart.nix;81}