{ lib, options, ... }:
with lib.types;
{
options.fooDeclarations = lib.mkOption {
default = (options.free.type.getSubOptions [ ])._freeformOptions.foo.declarations;
};
options.free = lib.mkOption {
type = submodule {
config._module.freeformType = lib.mkMerge [
(attrsOf (submodule {
options.foo = lib.mkOption { };
}))
options.bar = lib.mkOption { };
];
config.free.xxx.foo = 10;
config.free.yyy.bar = 10;
}