git.delta.rocks / jrsonnet / refs/commits / d2cec5d37894

difftreelog

source

lib/flakePart.nix2.3 KiBsourcehistory
1{crane}: {2  fleetLib,3  lib,4  config,5  ...6}: let7  inherit (lib.options) mkOption;8  inherit (lib.attrsets) mapAttrs;9  inherit (lib.types) lazyAttrsOf deferredModule unspecified;10  inherit (lib.strings) isPath;11  inherit (fleetLib.options) mkHostsOption;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          # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,23          # to do that, evaluate all the modules with only needed option declared.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                  options.hosts = mkHostsOption {45                    nixos.nixpkgs.overlays = [46                      (final: prev:47                        import ../pkgs {48                          inherit (prev) callPackage;49                          craneLib = crane.mkLib prev;50                        })51                    ];52                  };53                  config = {54                    data =55                      if isPath data56                      then import data57                      else data;58                  };59                }60              ];61            specialArgs.fleetLib = import ../lib {62              inherit (bootstrapNixpkgs) lib;63            };64          };65        in66          normalEval67      )68      nameToModule;69  };70  config = {71    _module.args.fleetLib = import ../lib {inherit lib;};72    flake.fleetConfigurations = config.fleetConfigurations;73    flake.fleetModules = config.fleetModules;74  };7576  _file = ./flakePart.nix;77}