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

difftreelog

feat default for nixpkgs.buildUsing

Yaroslav Bolyukin2024-11-11parent: #8fb243b.patch.diff
in: trunk

2 files changed

modifiedREADME.adocdiffbeforeafterboth
--- a/README.adoc
+++ b/README.adoc
@@ -47,9 +47,6 @@
 
       # Single flake may contain multiple fleet configurations, default one is called... `default`
       fleetConfigurations.default = {
-        # nixpkgs used to build the systems
-        nixpkgs.buildUsing = inputs.nixpkgs;
-
         # nixos option section of fleet config declares module, which is used for all configured nixos hosts.
         nixos = {
           imports = [inputs.lanzaboote.nixosModules.lanzaboote];
modifiedlib/flakePart.nixdiffbeforeafterboth
after · lib/flakePart.nix
1{crane}: {2  fleetLib,3  lib,4  config,5  inputs,6  self,7  ...8}: let9  inherit (lib.options) mkOption mkEnableOption;10  inherit (lib.attrsets) mapAttrs;11  inherit (lib.types) lazyAttrsOf deferredModule unspecified str;12  inherit (lib.strings) isPath;13  inherit (lib.modules) mkIf mkOptionDefault;14in {15  options.fleetModules = mkOption {16    type = lazyAttrsOf unspecified;17    default = {};18  };19  options.fleetNixosConfigurationsCompat = {20    enable = mkEnableOption "Create nixosConfiguration output based on fleetConfiguration";21    configuration = mkOption {22      type = str;23      description = "Which fleetConfiguration to use for compatibility";24      default = "default";25    };26    data = mkOption {27      type = unspecified;28      description = "Imported fleet.nix file for fleet";29    };30  };31  options.fleetConfigurations = mkOption {32    type = lazyAttrsOf deferredModule;33    apply = nameToModule:34      mapAttrs (35        name: module: data: let36          # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,37          # to do that, evaluate all the modules with only needed option declared.38          bootstrapEval = lib.evalModules {39            modules = [40              module41              {42                options.nixpkgs.buildUsing = mkOption {43                  description = ''44                    Nixpkgs to use for fleetConfiguration evaluation.45                  '';46                };47                config = {48                  _module.check = false;49                  nixpkgs.buildUsing = mkOptionDefault inputs.nixpkgs;50                };51              }52            ];53          };54          bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;55          normalEval = bootstrapNixpkgs.lib.evalModules {56            modules =57              (import ../modules/module-list.nix)58              ++ [59                module60                {61                  config = {62                    data =63                      if isPath data64                      then import data65                      else data;66                    nixpkgs.buildUsing = mkOptionDefault bootstrapNixpkgs;67                    nixpkgs.overlays = [68                      (final: prev:69                        import ../pkgs {70                          inherit (prev) callPackage;71                          craneLib = crane.mkLib prev;72                        })73                    ];74                  };75                }76              ];77            specialArgs = {78              inherit inputs self;79              fleetLib = import ../lib {80                inherit (bootstrapNixpkgs) lib;81              };82              _fleetFlakeRootConfig = config;83            };84          };85        in86          normalEval87      )88      nameToModule;89  };90  config = {91    _module.args.fleetLib = import ../lib {inherit lib;};92    flake.fleetConfigurations = config.fleetConfigurations;93    flake.nixosConfigurations = let94      cfg = config.fleetNixosConfigurationsCompat;95    in96      mkIf cfg.enable97      (98        mapAttrs99        (name: host: host.nixos)100        (config.fleetConfigurations.${cfg.configuration} cfg.data).config.hosts101      );102    flake.fleetModules = config.fleetModules;103  };104105  _file = ./flakePart.nix;106}