1{
2 config,
3 extendModules,
4 lib,
5 ...
6}:
7let
8 inherit (lib) mkOption types;
9
10 unsafeGetAttrPosStringOr =
11 default: name: value:
12 let
13 p = builtins.unsafeGetAttrPos name value;
14 in
15 if p == null then default else p.file + ":" + toString p.line + ":" + toString p.column;
16
17in
18{
19 options = {
20 result = mkOption {
21 internal = true;
22 default = config;
23 };
24 };
25 config = {
26 # Docs: nixos/doc/manual/development/writing-nixos-tests.section.md
27 /**
28 See https://nixos.org/manual/nixos/unstable#sec-override-nixos-test
29 */
30 passthru.extend =
31 args@{
32 modules,
33 specialArgs ? { },
34 }:
35 (extendModules {
36 inherit specialArgs;
37 modules = map (lib.setDefaultModuleLocation (
38 unsafeGetAttrPosStringOr "<test.extend module>" "modules" args
39 )) modules;
40 }).config.test;
41 };
42}