1{ crane }:2{3 fleetLib,4 lib,5 config,6 inputs,7 self,8 ...9}:10let11 inherit (lib.options) mkOption;12 inherit (lib.attrsets) mapAttrs;13 inherit (lib.types)14 lazyAttrsOf15 deferredModule16 unspecified17 ;18 inherit (lib.strings) isPath;19 inherit (lib.modules) mkOptionDefault;20in21{22 options.fleetModules = mkOption {23 type = lazyAttrsOf unspecified;24 default = { };25 };26 options.fleetConfigurations = mkOption {27 type = lazyAttrsOf deferredModule;28 apply =29 nameToModule:30 mapAttrs (31 name: module: data:32 let33 34 35 bootstrapEval = lib.evalModules {36 class = "fleet";37 prefix = ["fleetConfiguration"];38 modules = [39 module40 {41 options.nixpkgs.buildUsing = mkOption {42 description = ''43 Nixpkgs to use for fleetConfiguration evaluation.44 '';45 };46 config = {47 _module.check = false;48 nixpkgs.buildUsing = mkOptionDefault inputs.nixpkgs;49 };50 }51 ];52 };53 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;54 normalEval = bootstrapNixpkgs.lib.evalModules {55 class = "fleet";56 prefix = ["fleetConfiguration"];57 modules = (import ../modules/module-list.nix) ++ [58 module59 (60 { inputs', ... }:61 {62 config = {63 data = if isPath data then import data else data;64 nixpkgs.buildUsing = mkOptionDefault bootstrapNixpkgs;65 nixpkgs.overlays = [66 (final: prev: {67 inherit68 (import ../pkgs {69 inherit (prev) callPackage;70 inherit inputs';71 craneLib = crane.mkLib prev;72 })73 fleet-install-secrets74 fleet-generator-helper75 ;76 })77 ];78 };79 }80 )81 ];82 specialArgs = {83 inherit inputs self;84 fleetLib = import ../lib {85 inherit (bootstrapNixpkgs) lib;86 };87 _fleetFlakeRootConfig = config;88 };89 };90 in91 normalEval92 ) nameToModule;93 };94 config = {95 _module.args.fleetLib = import ../lib { inherit lib; };96 flake.fleetConfigurations = config.fleetConfigurations;97 flake.fleetModules = config.fleetModules;98 };99100 _file = ./flakePart.nix;101}