git.delta.rocks / fleet / refs/commits / 12bc0d4f3eb3

difftreelog

source

lib/flakePart.nix2.9 KiBsourcehistory
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          # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,34          # to do that, evaluate all the modules with only needed option declared.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 (final) callPackage;70                            inherit inputs;71                            craneLib = crane.mkLib prev;72                          })73                          fleet-install-secrets74                          fleet-generator-helper75                          remowt-plugin-fleet76                          ;77                      })78                    ];79                  };80                }81              )82            ];83            specialArgs = {84              inherit inputs self;85              fleetLib = import ../lib {86                inherit (bootstrapNixpkgs) lib;87              };88              _fleetFlakeRootConfig = config;89            };90          };91        in92        normalEval93      ) nameToModule;94  };95  config = {96    _module.args.fleetLib = import ../lib { inherit lib; };97    flake.fleetConfigurations = config.fleetConfigurations;98    flake.fleetModules = config.fleetModules;99  };100101  _file = ./flakePart.nix;102}