difftreelog
feat default for nixpkgs.buildUsing
in: trunk
2 files changed
README.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];
lib/flakePart.nixdiffbeforeafterboth1{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}