{ pkgs, config, lib, ... }: {
options = {
config_fcitx5 = lib.mkOption {
type = lib.types.attrsOf lib.types.path;
default = {};
description = ''
The fcitx5 config files in ~/.config/fcitx5/
'';
};
};
config = {
xdg.configFile = lib.mapAttrs' (path: source: lib.nameValuePair
"config_fcitx5_${baseNameOf path}"
(let
relDir = "fcitx5";
absDir = "${config.xdg.configHome}/${relDir}";
_path_ = "${dirOf path}/_${baseNameOf path}_";
in {
target = "${relDir}/${_path_}";
inherit source;
onChange = ''
if [[ -e ${absDir}/${path} ]]; then
${pkgs.crudini}/bin/crudini --merge ${absDir}/${path} < ${absDir}/${_path_}
else
cat ${absDir}/${_path_} > ${absDir}/${path}
fi
'';
})
) config.config_fcitx5;
};
}