From b0c2c96cbe12c5a3a280ffd2634ebe0c8507e8b0 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 11 Jan 2020 08:54:42 +0100 Subject: lib/types: improve loaOf warning Not all modules use name attribute as the name of the submodule, for example, environment.etc uses target. We will need to maintain a list of exceptions. --- lib/types.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/types.nix b/lib/types.nix index e86f6d3647611..cbbea00058d0e 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -340,18 +340,22 @@ rec { let padWidth = stringLength (toString (length def.value)); unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i; + nameAttrs = { + "environment.etc" = "target"; + }; + nameAttr = nameAttrs.${option} or "name"; res = { inherit (def) file; value = listToAttrs ( imap1 (elemIdx: elem: - { name = elem.name or (unnamed elemIdx); + { name = elem.${nameAttr} or (unnamed elemIdx); value = elem; }) def.value); }; option = concatStringsSep "." loc; sample = take 3 def.value; - list = concatMapStrings (x: ''{ name = "${x.name or "unnamed"}"; ...} '') sample; - set = concatMapStrings (x: ''${x.name or "unnamed"} = {...}; '') sample; + list = concatMapStrings (x: ''{ ${nameAttr} = "${x.${nameAttr} or "unnamed"}"; ...} '') sample; + set = concatMapStrings (x: ''${x.${nameAttr} or "unnamed"} = {...}; '') sample; msg = '' In file ${def.file} a list is being assigned to the option config.${option}. -- cgit 1.4.1