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