let
pkgs = import <nixpkgs> {};
hm = import <home-manager/modules> {
inherit pkgs;
configuration = {
imports = [
../../.
# config 1
{
yq-merge.".config/miao.json" = {
generator = builtins.toJSON;
expr = { wang = "wang wang!"; };
};
}
# config 2
{
yq-merge.".config/miao.json" = {
generator = builtins.toJSON;
expr = { miao = "miao miao!"; };
preOnChange = ''
echo wang
'';
postOnChange = ''
echo zhi
'';
};
}
];
home = {stateVersion="25.11"; username="dummy"; homeDirectory="/dummy";};
};
};
in pkgs.lib.runTests {
# The `generator` type must not be `lib.types.functionTo lib.types.lines`.
# If it were, home-manager would merge the generated text from multiple configs.
# This test verifies that the generator outputs are not merged.
test-multi-config = {
expr = hm.config.home.file.".config/miao.json".text;
expected = "{\"miao\":\"miao miao!\",\"wang\":\"wang wang!\"}";
};
}