From 5bb1e0c7720cb30961e82f7fb3b8d265ad2cf4f3 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Fri, 10 Jun 2022 13:13:48 +0200 Subject: [PATCH] Revert "lib/modules: Make unifyModuleSyntax key required, use setDefaultModuleLocation" The performance did not improve, judging by the memory statistics. Baseline: https://github.com/NixOS/nixpkgs/pull/177157/checks?check_run_id=6828895472 Without optionalAttrs: https://github.com/NixOS/nixpkgs/pull/177157/checks?check_run_id=6829274815 So the memory cost of the reverted commit was about 0.05%. This reverts commit bb8461b4cb05bd468e34f2191cdea28dcd01e70a. --- lib/modules.nix | 6 ++++-- lib/types.nix | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/modules.nix b/lib/modules.nix index d8ae497fb2d84..d823773a2ff8e 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -455,19 +455,21 @@ rec { throw "Module `${key}' has an unsupported attribute `${head (attrNames badAttrs)}'. This is caused by introducing a top-level `config' or `options' attribute. Add configuration attributes immediately on the top level instead, or move all of them (namely: ${toString (attrNames badAttrs)}) into the explicit `config' attribute." else { _file = toString m._file or file; - key = toString m.key or key; disabledModules = m.disabledModules or []; imports = m.imports or []; options = m.options or {}; config = addFreeformType (addMeta (m.config or {})); + } // optionalAttrs (m?key || key != null) { + key = toString m.key or key; } else { _file = toString m._file or file; - key = toString m.key or key; disabledModules = m.disabledModules or []; imports = m.require or [] ++ m.imports or []; options = {}; config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"])); + } // optionalAttrs (m?key || key != null) { + key = toString m.key or key; }; applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then diff --git a/lib/types.nix b/lib/types.nix index 99dc54518c748..4a224099c9250 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -579,15 +579,16 @@ rec { then value: value else value: { config = value; }; - allModules = defs: - map - ({ value, file }: - if isAttrs value - then { _file = file; imports = [ (shorthandToModule value) ]; } - else if isFunction value - then { _file = file; imports = [ value ]; } - else value) - defs; + allModules = defs: map ({ value, file }: + if isFunction value + then setFunctionArgs + (args: lib.modules.unifyModuleSyntax file null (value args)) + (functionArgs value) + else if isAttrs value + then + lib.modules.unifyModuleSyntax file null (shorthandToModule value) + else value + ) defs; base = evalModules { inherit specialArgs;