From 272eb00d1396bd86e77ebefd1abc47dfcab837b3 Mon Sep 17 00:00:00 2001 From: June Stepp Date: Wed, 30 Apr 2025 19:19:29 +0000 Subject: [PATCH] fcitx5: ensure config doesn't get overwritten (#6940) fcitx5 overwrites config files unless the entire folder is readonly. With this PR, a single fcitx5 symlink is made instead of multiple fcitx5/* ones. The link is only created when relevant options are set. --- modules/i18n/input-method/fcitx5.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/i18n/input-method/fcitx5.nix b/modules/i18n/input-method/fcitx5.nix index 5f9a9aac2..33c449322 100644 --- a/modules/i18n/input-method/fcitx5.nix +++ b/modules/i18n/input-method/fcitx5.nix @@ -217,21 +217,23 @@ in }; xdg = { - configFile = + configFile.fcitx5 = let optionalFile = p: f: v: lib.optionalAttrs (v != { }) { - "fcitx5/${p}".source = f "fcitx5-${builtins.replaceStrings [ "/" ] [ "-" ] p}" v; + ${p} = f "fcitx5-${builtins.replaceStrings [ "/" ] [ "-" ] p}" v; }; + entries = lib.attrsets.mergeAttrsList [ + (optionalFile "config" iniFormat.generate cfg.settings.globalOptions) + (optionalFile "profile" iniFormat.generate cfg.settings.inputMethod) + (lib.concatMapAttrs ( + name: value: optionalFile "conf/${name}.conf" iniGlobalFormat.generate value + ) cfg.settings.addons) + ]; in - lib.attrsets.mergeAttrsList [ - (optionalFile "config" iniFormat.generate cfg.settings.globalOptions) - (optionalFile "profile" iniFormat.generate cfg.settings.inputMethod) - (lib.concatMapAttrs ( - name: value: optionalFile "conf/${name}.conf" iniGlobalFormat.generate value - ) cfg.settings.addons) - ]; + lib.mkIf (entries != { }) { source = pkgs.linkFarm "fcitx-config" entries; }; + dataFile = lib.concatMapAttrs ( name: attrs: let