Unverified Commit b02a3d7b authored by Silvan Mosberger's avatar Silvan Mosberger
Browse files

lib/modules: Scope module evaluation variables more tightly

This is a purely cosmetic change so it's easier to see dependencies
between variables.
parent b3f869fe
Loading
Loading
Loading
Loading
+31 −28
Original line number Diff line number Diff line
@@ -65,13 +65,15 @@ rec {
        };
      };

      collected = collectModules
      options =
        let collected = collectModules
          (specialArgs.modulesPath or "")
          (modules ++ [ internalModule ])
        ({ inherit config options lib; } // specialArgs);

      options = mergeModules prefix (reverseList collected);
          ({ inherit lib options config; } // specialArgs);
        in mergeModules prefix (reverseList collected);

      config =
        let
          # Traverse options and extract the option values into the final
          # config set.  At the same time, check whether all option
          # definitions have matching declarations.
@@ -79,7 +81,6 @@ rec {
          # without an infinite recursion. One way around this is to make the
          # 'config' passed around to the modules be unconditionally unchecked,
          # and only do the check in 'result'.
      config = yieldConfig prefix options;
          yieldConfig = prefix: set:
            let res = removeAttrs (mapAttrs (n: v:
              if isOption v then v.value
@@ -93,6 +94,8 @@ rec {
                res set._definedNames
            else
              res;
        in yieldConfig prefix options;

      result = {
        inherit options;
        config = removeAttrs config [ "_module" ];