8 ...8 ...
9}:9}:
10let10let
11 inherit (lib.options) mkOption mkEnableOption;11 inherit (lib.options) mkOption;
12 inherit (lib.attrsets) mapAttrs;12 inherit (lib.attrsets) mapAttrs;
13 inherit (lib.types)13 inherit (lib.types)
14 lazyAttrsOf14 lazyAttrsOf
15 deferredModule15 deferredModule
16 unspecified16 unspecified
17 str
18 ;17 ;
19 inherit (lib.strings) isPath;18 inherit (lib.strings) isPath;
20 inherit (lib.modules) mkIf mkOptionDefault;19 inherit (lib.modules) mkOptionDefault;
21in20in
22{21{
23 options.fleetModules = mkOption {22 options.fleetModules = mkOption {
24 type = lazyAttrsOf unspecified;23 type = lazyAttrsOf unspecified;
25 default = { };24 default = { };
26 };25 };
27 options.fleetNixosConfigurationsCompat = {
28 enable = mkEnableOption "Create nixosConfiguration output based on fleetConfiguration";
29 configuration = mkOption {
30 type = str;
31 description = "Which fleetConfiguration to use for compatibility";
32 default = "default";
33 };
34 data = mkOption {
35 type = unspecified;
36 description = "Imported fleet.nix file for fleet";
37 };
38 };
39 options.fleetConfigurations = mkOption {26 options.fleetConfigurations = mkOption {
40 type = lazyAttrsOf deferredModule;27 type = lazyAttrsOf deferredModule;
41 apply =28 apply =
103 config = {90 config = {
104 _module.args.fleetLib = import ../lib { inherit lib; };91 _module.args.fleetLib = import ../lib { inherit lib; };
105 flake.fleetConfigurations = config.fleetConfigurations;92 flake.fleetConfigurations = config.fleetConfigurations;
106 flake.nixosConfigurations =
107 let
108 cfg = config.fleetNixosConfigurationsCompat;
109 in
110 mkIf cfg.enable (
111 mapAttrs (name: host: host.nixos)
112 (config.fleetConfigurations.${cfg.configuration} cfg.data).config.hosts
113 );
114 flake.fleetModules = config.fleetModules;93 flake.fleetModules = config.fleetModules;
115 };94 };
11695