at 23.05-pre 1.2 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 im = config.i18n.inputMethod; 7 cfg = im.fcitx5; 8 addons = cfg.addons ++ optional cfg.enableRimeData pkgs.rime-data; 9 fcitx5Package = pkgs.fcitx5-with-addons.override { inherit addons; }; 10 whetherRimeDataDir = any (p: p.pname == "fcitx5-rime") cfg.addons; 11in { 12 options = { 13 i18n.inputMethod.fcitx5 = { 14 addons = mkOption { 15 type = with types; listOf package; 16 default = []; 17 example = literalExpression "with pkgs; [ fcitx5-rime ]"; 18 description = lib.mdDoc '' 19 Enabled Fcitx5 addons. 20 ''; 21 }; 22 23 enableRimeData = mkEnableOption (lib.mdDoc "default rime-data with fcitx5-rime"); 24 }; 25 }; 26 27 config = mkIf (im.enabled == "fcitx5") { 28 i18n.inputMethod.package = fcitx5Package; 29 30 environment = mkMerge [{ 31 variables = { 32 GTK_IM_MODULE = "fcitx"; 33 QT_IM_MODULE = "fcitx"; 34 XMODIFIERS = "@im=fcitx"; 35 QT_PLUGIN_PATH = [ "${fcitx5Package}/${pkgs.qt6.qtbase.qtPluginPrefix}" ]; 36 }; 37 } 38 (mkIf whetherRimeDataDir { 39 pathsToLink = [ 40 "/share/rime-data" 41 ]; 42 43 variables = { 44 NIX_RIME_DATA_DIR = "/run/current-system/sw/share/rime-data"; 45 }; 46 })]; 47 }; 48}