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;12in {13 options.fleetModules = mkOption {14 type = lazyAttrsOf unspecified;15 default = {};16 };17 options.fleetConfigurations = mkOption {18 type = lazyAttrsOf deferredModule;19 apply = nameToModule:20 mapAttrs (21 name: module: data: let22 23 24 bootstrapEval = lib.evalModules {25 modules = [26 module27 {28 options.nixpkgs.buildUsing = mkOption {29 description = ''30 Nixpkgs to use for fleetConfiguration evaluation.31 '';32 };33 config._module.check = false;34 }35 ];36 };37 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;38 normalEval = bootstrapNixpkgs.lib.evalModules {39 modules =40 (import ../modules/module-list.nix)41 ++ [42 module43 {44 config = {45 data =46 if isPath data47 then import data48 else data;49 nixpkgs.overlays = [50 (final: prev:51 import ../pkgs {52 inherit (prev) callPackage;53 craneLib = crane.mkLib prev;54 })55 ];56 };57 }58 ];59 specialArgs = {60 inherit inputs;61 fleetLib = import ../lib {62 inherit (bootstrapNixpkgs) lib;63 };64 };65 };66 in67 normalEval68 )69 nameToModule;70 };71 config = {72 _module.args.fleetLib = import ../lib {inherit lib;};73 flake.fleetConfigurations = config.fleetConfigurations;74 flake.fleetModules = config.fleetModules;75 };7677 _file = ./flakePart.nix;78}