1# This is a test to show that mkAliasOptionModule sets the priority correctly
2# for aliased options.
3#
4# This test shows that an alias with a high priority is able to override
5# a non-aliased option.
6
7{ config, lib, ... }:
8
9with lib;
10
11{
12 options = {
13 # A simple boolean option that can be enabled or disabled.
14 enable = lib.mkOption {
15 type = types.nullOr types.bool;
16 default = null;
17 example = true;
18 description = ''
19 Some descriptive text
20 '';
21 };
22
23 # mkAliasOptionModule sets warnings, so this has to be defined.
24 warnings = mkOption {
25 internal = true;
26 default = [];
27 type = types.listOf types.str;
28 example = [ "The `foo' service is deprecated and will go away soon!" ];
29 description = ''
30 This option allows modules to show warnings to users during
31 the evaluation of the system configuration.
32 '';
33 };
34 };
35
36 imports = [
37 # Create an alias for the "enable" option.
38 (mkAliasOptionModule [ "enableAlias" ] [ "enable" ])
39
40 # Disable the aliased option with a high priority so it
41 # should override the next import.
42 ( { config, lib, ... }:
43 {
44 enableAlias = lib.mkForce false;
45 }
46 )
47
48 # Enable the normal (non-aliased) option.
49 ( { config, lib, ... }:
50 {
51 enable = true;
52 }
53 )
54 ];
55}