1{2 flake-utils,3 fleetPkgsForPkgs,4}: {5 fleetConfiguration = {6 7 8 9 10 data,11 nixpkgs,12 overlays ? [],13 hosts,14 fleetModules,15 nixosModules ? [],16 extraFleetLib ? {},17 }: let18 hostNames = nixpkgs.lib.attrNames hosts;19 fleetLib =20 (import ./fleetLib.nix {21 inherit nixpkgs hostNames;22 })23 // extraFleetLib;24 in let25 root = nixpkgs.lib.evalModules {26 modules =27 (import ../modules/fleet/_modules.nix)28 ++ [29 data30 ({...}: {31 inherit nixosModules hosts;32 overlays = [(final: prev: (fleetPkgsForPkgs final))] ++ overlays;33 })34 ]35 ++ fleetModules;36 specialArgs = {37 inherit nixpkgs fleetLib;38 };39 };40 failedAssertions = map (x: x.message) (nixpkgs.lib.filter (x: !x.assertion) root.config.assertions);41 checkedRoot =42 if failedAssertions != []43 then throw "Fleet failed assertions:\n${nixpkgs.lib.concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}"44 else nixpkgs.lib.showWarnings root.config.warnings root;45 withData = {46 root,47 data,48 }: {49 config = root.config;50 };51 defaultData = withData {52 inherit data;53 root = checkedRoot;54 };55 uncheckedData = withData {inherit data root;};56 in {57 inherit nixpkgs overlays;58 inherit (defaultData) config;59 unchecked = {60 inherit (uncheckedData) config;61 };62 };63}