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
before · lib/flakePart.nix
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            modules = [37              module38              {39                options.nixpkgs.buildUsing = mkOption {40                  description = ''41                    Nixpkgs to use for fleetConfiguration evaluation.42                  '';43                };44                config = {45                  _module.check = false;46                  nixpkgs.buildUsing = mkOptionDefault inputs.nixpkgs;47                };48              }49            ];50          };51          bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing;52          normalEval = bootstrapNixpkgs.lib.evalModules {53            modules = (import ../modules/module-list.nix) ++ [54              module55              (56                { inputs', ... }:57                {58                  config = {59                    data = if isPath data then import data else data;60                    nixpkgs.buildUsing = mkOptionDefault bootstrapNixpkgs;61                    nixpkgs.overlays = [62                      (final: prev: {63                        inherit64                          (import ../pkgs {65                            inherit (prev) callPackage;66                            inherit inputs';67                            craneLib = crane.mkLib prev;68                          })69                          fleet-install-secrets70                          fleet-generator-helper71                          ;72                      })73                    ];74                  };75                }76              )77            ];78            specialArgs = {79              inherit inputs self;80              fleetLib = import ../lib {81                inherit (bootstrapNixpkgs) lib;82              };83              _fleetFlakeRootConfig = config;84            };85          };86        in87        normalEval88      ) nameToModule;89  };90  config = {91    _module.args.fleetLib = import ../lib { inherit lib; };92    flake.fleetConfigurations = config.fleetConfigurations;93    flake.fleetModules = config.fleetModules;94  };9596  _file = ./flakePart.nix;97}
modifiedmodules/nixos.nixdiffbeforeafterboth
--- a/modules/nixos.nix
+++ b/modules/nixos.nix
@@ -37,14 +37,17 @@
             module:
             let
               inherit (hostArgs.config) system;
+              modulesPath = "${config.nixpkgs.buildUsing}/nixos/modules";
             in
             config.nixpkgs.buildUsing.lib.evalModules {
-              modules = (import "${config.nixpkgs.buildUsing}/nixos/modules/module-list.nix") ++ [
+              class = "nixos";
+              prefix = ["fleetConfiguration" "hosts" hostArgs.config._module.args.name "nixos"];
+              modules = (import "${modulesPath}/module-list.nix") ++ [
                 (module // { key = "attr<host.nixos>"; })
                 (config.nixos // { key = "attr<fleet.nixos>"; })
               ];
               specialArgs = {
-                inherit fleetLib inputs self;
+                inherit fleetLib inputs self modulesPath;
                 inputs' = mapAttrs (
                   inputName: input:
                   builtins.addErrorContext
@@ -56,6 +59,9 @@
                         "input is not a flake, perhaps flake = false was added to te input declaration?"
                     )
                 ) inputs;
+                self' = builtins.addErrorContext "while retrieving system-dependent attributes for a flake's own outputs" (
+                  _fleetFlakeRootConfig.perInput system self
+                );
               };
             };
         };
@@ -68,7 +74,7 @@
         #   (mkRemovedOptionModule ["nixosModules"] "replaced with hosts.*.nixos.imports.")
         # ];
         nixos = {
-          config._module.args = {
+          _module.args = {
             nixosHosts = mapAttrs (_: value: value.nixos_unchecked.config) config.hosts;
             hosts = config.hosts;
             host = hostArgs.config;