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