1{ lib, options, ... }: with lib.types; {
2
3 options.fooDeclarations = lib.mkOption {
4 default = (options.free.type.getSubOptions [])._freeformOptions.foo.declarations;
5 };
6
7 options.free = lib.mkOption {
8 type = submodule {
9 config._module.freeformType = lib.mkMerge [
10 (attrsOf (submodule {
11 options.foo = lib.mkOption {};
12 }))
13 (attrsOf (submodule {
14 options.bar = lib.mkOption {};
15 }))
16 ];
17 };
18 };
19
20 config.free.xxx.foo = 10;
21 config.free.yyy.bar = 10;
22}