dxvk_1: fix build compatibility with GCC 14 (#360918)
[NixPkgs.git] / lib / tests / modules / lazy-attrsWith.nix
blobbd214819c1111d84753e887c2dedbedc38717ebb
1 # Check that AttrsWith { lazy = true; } is lazy
2 { lib, ... }:
3 let
4   inherit (lib) types mkOption;
6   lazyAttrsOf = mkOption {
7     # Same as lazyAttrsOf
8     type = types.attrsWith {
9       lazy = true;
10       elemType = types.int;
11     };
12   };
14   attrsOf = mkOption {
15     # Same as lazyAttrsOf
16     type = types.attrsWith {
17       elemType = types.int;
18     };
19   };
22   imports = [
23     #  Module A
24     (
25       { ... }:
26       {
27         options.mergedLazyLazy = lazyAttrsOf;
28         options.mergedLazyNonLazy = lazyAttrsOf;
29         options.mergedNonLazyNonLazy = attrsOf;
30       }
31     )
32     # Module B
33     (
34       { ... }:
35       {
36         options.mergedLazyLazy = lazyAttrsOf;
37         options.mergedLazyNonLazy = attrsOf;
38         options.mergedNonLazyNonLazy = attrsOf;
39       }
40     )
41     # Result
42     (
43       { config, ... }:
44       {
45         # Can only evaluate if lazy
46         config.mergedLazyLazy.bar = config.mergedLazyLazy.baz + 1;
47         config.mergedLazyLazy.baz = 10;
48         options.lazyResult = mkOption { default = config.mergedLazyLazy.bar; };
50         # Can not only evaluate if not lazy
51         config.mergedNonLazyNonLazy.bar = config.mergedNonLazyNonLazy.baz + 1;
52         config.mergedNonLazyNonLazy.baz = 10;
53         options.nonLazyResult = mkOption { default = config.mergedNonLazyNonLazy.bar; };
54       }
55     )
56   ];