1{ lib, ... }:
2{
3 options = {
4 sub = {
5 nixosOk = lib.mkOption {
6 type = lib.types.submoduleWith {
7 class = "nixos";
8 modules = [
9 ./assert-module-class-is-nixos.nix
10 ];
11 };
12 };
13 # Same but will have bad definition
14 nixosFail = lib.mkOption {
15 type = lib.types.submoduleWith {
16 class = "nixos";
17 modules = [ ];
18 };
19 };
20
21 mergeFail = lib.mkOption {
22 type = lib.types.submoduleWith {
23 class = "nixos";
24 modules = [ ];
25 };
26 default = { };
27 };
28 };
29 };
30 imports = [
31 {
32 options = {
33 sub = {
34 mergeFail = lib.mkOption {
35 type = lib.types.submoduleWith {
36 class = "darwin";
37 modules = [ ];
38 };
39 };
40 };
41 };
42 }
43 ];
44 config = {
45 _module.freeformType = lib.types.anything;
46 ok = lib.evalModules {
47 class = "nixos";
48 modules = [
49 ./module-class-is-nixos.nix
50 ./assert-module-class-is-nixos.nix
51 ];
52 };
53
54 fail = lib.evalModules {
55 class = "nixos";
56 modules = [
57 ./module-class-is-nixos.nix
58 ./module-class-is-darwin.nix
59 ];
60 };
61
62 fail-anon = lib.evalModules {
63 class = "nixos";
64 modules = [
65 ./module-class-is-nixos.nix
66 {
67 _file = "foo.nix#darwinModules.default";
68 _class = "darwin";
69 config = { };
70 imports = [ ];
71 }
72 ];
73 };
74
75 sub.nixosOk = {
76 _class = "nixos";
77 };
78 sub.nixosFail = {
79 imports = [ ./module-class-is-darwin.nix ];
80 };
81 };
82}