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

difftreelog

feat set modulesPath specialArg

ypstxxyqYaroslav Bolyukin2026-01-22parent: #5973a7a.patch.diff
in: trunk

2 files changed

modifiedlib/flakePart.nixdiffbeforeafterboth
--- a/lib/flakePart.nix
+++ b/lib/flakePart.nix
@@ -33,6 +33,8 @@
           # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute,
           # to do that, evaluate all the modules with only needed option declared.
           bootstrapEval = lib.evalModules {
+            class = "fleet";
+            prefix = ["fleetConfiguration"];
             modules = [
               module
               {
@@ -50,6 +52,8 @@
           };
           bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;
           normalEval = bootstrapNixpkgs.lib.evalModules {
+            class = "fleet";
+            prefix = ["fleetConfiguration"];
             modules = (import ../modules/module-list.nix) ++ [
               module
               (
modifiedmodules/nixos.nixdiffbeforeafterboth
before · modules/nixos.nix
1{2  lib,3  fleetLib,4  inputs,5  self,6  config,7  _fleetFlakeRootConfig,8  ...9}:10let11  inherit (lib.attrsets) mapAttrs;12  inherit (lib.options) mkOption;13  inherit (lib.types) deferredModule unspecified;14  inherit (lib.modules) mkRemovedOptionModule;15  inherit (lib.strings) escapeNixIdentifier;16  inherit (fleetLib.options) mkHostsOption;1718  _file = ./nixos.nix;19in20{21  options = {22    nixos = mkOption {23      description = ''24        Shared nixos configuration module for all hosts.25      '';26      type = deferredModule;27    };28    hosts = mkHostsOption (hostArgs: {29      inherit _file;30      options = {31        nixos = mkOption {32          description = ''33            Nixos configuration for the current host.34          '';35          type = deferredModule;36          apply =37            module:38            let39              inherit (hostArgs.config) system;40            in41            config.nixpkgs.buildUsing.lib.evalModules {42              modules = (import "${config.nixpkgs.buildUsing}/nixos/modules/module-list.nix") ++ [43                (module // { key = "attr<host.nixos>"; })44                (config.nixos // { key = "attr<fleet.nixos>"; })45              ];46              specialArgs = {47                inherit fleetLib inputs self;48                inputs' = mapAttrs (49                  inputName: input:50                  builtins.addErrorContext51                    "while retrieving system-dependent attributes for input ${escapeNixIdentifier inputName}"52                    (53                      if input._type or null == "flake" then54                        _fleetFlakeRootConfig.perInput system input55                      else56                        "input is not a flake, perhaps flake = false was added to te input declaration?"57                    )58                ) inputs;59              };60            };61        };62        nixos_unchecked = mkOption {63          type = unspecified;64        };65      };66      config = {67        # imports = [68        #   (mkRemovedOptionModule ["nixosModules"] "replaced with hosts.*.nixos.imports.")69        # ];70        nixos = {71          config._module.args = {72            nixosHosts = mapAttrs (_: value: value.nixos_unchecked.config) config.hosts;73            hosts = config.hosts;74            host = hostArgs.config;75            fleetConfiguration = config;76          };77        };78        nixos_unchecked = hostArgs.config.nixos.extendModules {79          modules = [80            {81              _module.check = false;82            }83          ];84        };85      };86    });87  };88  imports = [89    (mkRemovedOptionModule [ "nixosModules" ] "replaced with nixos.imports.")90  ];91  config.nixos.imports = import ./nixos/module-list.nix;92}
after · modules/nixos.nix
1{2  lib,3  fleetLib,4  inputs,5  self,6  config,7  _fleetFlakeRootConfig,8  ...9}:10let11  inherit (lib.attrsets) mapAttrs;12  inherit (lib.options) mkOption;13  inherit (lib.types) deferredModule unspecified;14  inherit (lib.modules) mkRemovedOptionModule;15  inherit (lib.strings) escapeNixIdentifier;16  inherit (fleetLib.options) mkHostsOption;1718  _file = ./nixos.nix;19in20{21  options = {22    nixos = mkOption {23      description = ''24        Shared nixos configuration module for all hosts.25      '';26      type = deferredModule;27    };28    hosts = mkHostsOption (hostArgs: {29      inherit _file;30      options = {31        nixos = mkOption {32          description = ''33            Nixos configuration for the current host.34          '';35          type = deferredModule;36          apply =37            module:38            let39              inherit (hostArgs.config) system;40              modulesPath = "${config.nixpkgs.buildUsing}/nixos/modules";41            in42            config.nixpkgs.buildUsing.lib.evalModules {43              class = "nixos";44              prefix = ["fleetConfiguration" "hosts" hostArgs.config._module.args.name "nixos"];45              modules = (import "${modulesPath}/module-list.nix") ++ [46                (module // { key = "attr<host.nixos>"; })47                (config.nixos // { key = "attr<fleet.nixos>"; })48              ];49              specialArgs = {50                inherit fleetLib inputs self modulesPath;51                inputs' = mapAttrs (52                  inputName: input:53                  builtins.addErrorContext54                    "while retrieving system-dependent attributes for input ${escapeNixIdentifier inputName}"55                    (56                      if input._type or null == "flake" then57                        _fleetFlakeRootConfig.perInput system input58                      else59                        "input is not a flake, perhaps flake = false was added to te input declaration?"60                    )61                ) inputs;62                self' = builtins.addErrorContext "while retrieving system-dependent attributes for a flake's own outputs" (63                  _fleetFlakeRootConfig.perInput system self64                );65              };66            };67        };68        nixos_unchecked = mkOption {69          type = unspecified;70        };71      };72      config = {73        # imports = [74        #   (mkRemovedOptionModule ["nixosModules"] "replaced with hosts.*.nixos.imports.")75        # ];76        nixos = {77          _module.args = {78            nixosHosts = mapAttrs (_: value: value.nixos_unchecked.config) config.hosts;79            hosts = config.hosts;80            host = hostArgs.config;81            fleetConfiguration = config;82          };83        };84        nixos_unchecked = hostArgs.config.nixos.extendModules {85          modules = [86            {87              _module.check = false;88            }89          ];90        };91      };92    });93  };94  imports = [95    (mkRemovedOptionModule [ "nixosModules" ] "replaced with nixos.imports.")96  ];97  config.nixos.imports = import ./nixos/module-list.nix;98}