summaryrefslogtreecommitdiffstats
path: root/lib/tests/modules/deprecated-wrapped.nix
blob: c50a7d79f59f95ef6d7438d23cfd02218b467116 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
{ lib, ... }:
let
  inherit (lib) types mkOption;

  inherit (types)
    # attrsOf uses attrsWith internally
    attrsOf
    listOf
    unique
    nullOr
    functionTo
    coercedTo
    either
    ;
in
{
  imports = [
    #  Module A
    (
      { ... }:
      {
        options.attrsWith = mkOption {
          type = attrsOf (listOf types.str);
        };
        options.mergedAttrsWith = mkOption {
          type = attrsOf (listOf types.str);
        };
        options.listOf = mkOption {
          type = listOf (listOf types.str);
        };
        options.mergedListOf = mkOption {
          type = listOf (listOf types.str);
        };
        # unique
        options.unique = mkOption {
          type = unique { message = ""; } (listOf types.str);
        };
        options.mergedUnique = mkOption {
          type = unique { message = ""; } (listOf types.str);
        };
        # nullOr
        options.nullOr = mkOption {
          type = nullOr (listOf types.str);
        };
        options.mergedNullOr = mkOption {
          type = nullOr (listOf types.str);
        };
        # functionTo
        options.functionTo = mkOption {
          type = functionTo (listOf types.str);
        };
        options.mergedFunctionTo = mkOption {
          type = functionTo (listOf types.str);
        };
        # coercedTo
        # Note: coercedTo is a non-mergeable option-type
        options.coercedTo = mkOption {
          type = coercedTo (listOf types.str) lib.id (listOf types.str);
        };
        options.either = mkOption {
          type = either (listOf types.str) (listOf types.str);
        };
        options.mergedEither = mkOption {
          type = either (listOf types.str) (listOf types.str);
        };
      }
    )
    # Module B
    (
      { ... }:
      {
        options.mergedAttrsWith = mkOption {
          type = attrsOf (listOf types.str);
        };
        options.mergedListOf = mkOption {
          type = listOf (listOf types.str);
        };
        options.mergedUnique = mkOption {
          type = unique { message = ""; } (listOf types.str);
        };
        options.mergedNullOr = mkOption {
          type = nullOr (listOf types.str);
        };
        options.mergedFunctionTo = mkOption {
          type = functionTo (listOf types.str);
        };
        options.mergedEither = mkOption {
          type = either (listOf types.str) (listOf types.str);
        };
      }
    )
  ];
}