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 modules = [37 module38 {39 options.nixpkgs.buildUsing = mkOption {40 description = ''41 Nixpkgs to use for fleetConfiguration evaluation.42 '';43 };44 config = {45 _module.check = false;46 nixpkgs.buildUsing = mkOptionDefault inputs.nixpkgs;47 };48 }49 ];50 };51 bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;52 normalEval = bootstrapNixpkgs.lib.evalModules {53 modules = (import ../modules/module-list.nix) ++ [54 module55 (56 { inputs', ... }:57 {58 config = {59 data = if isPath data then import data else data;60 nixpkgs.buildUsing = mkOptionDefault bootstrapNixpkgs;61 nixpkgs.overlays = [62 (final: prev: {63 inherit64 (import ../pkgs {65 inherit (prev) callPackage;66 inherit inputs';67 craneLib = crane.mkLib prev;68 })69 fleet-install-secrets70 fleet-generator-helper71 ;72 })73 ];74 };75 }76 )77 ];78 specialArgs = {79 inherit inputs self;80 fleetLib = import ../lib {81 inherit (bootstrapNixpkgs) lib;82 };83 _fleetFlakeRootConfig = config;84 };85 };86 in87 normalEval88 ) nameToModule;89 };90 config = {91 _module.args.fleetLib = import ../lib { inherit lib; };92 flake.fleetConfigurations = config.fleetConfigurations;93 flake.fleetModules = config.fleetModules;94 };9596 _file = ./flakePart.nix;97}