From 5fb20d2f8cad7a6332baafbb2986ac0ef16c6fc7 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Sat, 10 Dec 2022 23:23:42 +0100 Subject: [PATCH] lib.modules: Add error context to rendered default and example attrs --- lib/options.nix | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/options.nix b/lib/options.nix index b13687576e81..0fd5b64a65d1 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -221,9 +221,10 @@ rec { optionAttrSetToDocList' = _: options: concatMap (opt: let + name = showOption opt.loc; docOption = rec { loc = opt.loc; - name = showOption opt.loc; + inherit name; description = opt.description or null; declarations = filter (x: x != unknownModule) opt.declarations; internal = opt.internal or false; @@ -234,8 +235,18 @@ rec { readOnly = opt.readOnly or false; type = opt.type.description or "unspecified"; } - // optionalAttrs (opt ? example) { example = renderOptionValue opt.example; } - // optionalAttrs (opt ? default) { default = renderOptionValue (opt.defaultText or opt.default); } + // optionalAttrs (opt ? example) { + example = + builtins.addErrorContext "while evaluating the example of option `${name}`" ( + renderOptionValue opt.example + ); + } + // optionalAttrs (opt ? default) { + default = + builtins.addErrorContext "while evaluating the default value of option `${name}`" ( + renderOptionValue (opt.defaultText or opt.default) + ); + } // optionalAttrs (opt ? relatedPackages && opt.relatedPackages != null) { inherit (opt) relatedPackages; }; subOptions =