From 71540ff21654635d2d617ff31f07b69c76b71423 Mon Sep 17 00:00:00 2001 From: linsui Date: Fri, 28 Jul 2023 22:26:53 +0800 Subject: nixos/fcitx5: add quickPhrase --- nixos/modules/i18n/input-method/fcitx5.nix | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/nixos/modules/i18n/input-method/fcitx5.nix b/nixos/modules/i18n/input-method/fcitx5.nix index 7251240d26ac3..39952d6c3999e 100644 --- a/nixos/modules/i18n/input-method/fcitx5.nix +++ b/nixos/modules/i18n/input-method/fcitx5.nix @@ -12,12 +12,34 @@ in i18n.inputMethod.fcitx5 = { addons = mkOption { type = with types; listOf package; - default = []; + default = [ ]; example = literalExpression "with pkgs; [ fcitx5-rime ]"; description = lib.mdDoc '' Enabled Fcitx5 addons. ''; }; + quickPhrase = mkOption { + type = with types; attrsOf string; + default = { }; + example = literalExpression '' + { + smile = "(・∀・)"; + angry = "( ̄ー ̄)"; + } + ''; + description = lib.mdDoc "Quick phrases."; + }; + quickPhraseFiles = mkOption { + type = with types; attrsOf path; + default = { }; + example = literalExpression '' + { + words = ./words.mb; + numbers = ./numbers.mb; + } + ''; + description = lib.mdDoc "Quick phrase files."; + }; }; }; @@ -30,6 +52,16 @@ in config = mkIf (im.enabled == "fcitx5") { i18n.inputMethod.package = fcitx5Package; + i18n.inputMethod.fcitx5.addons = lib.optionals (cfg.quickPhrase != { }) [ + (pkgs.writeTextDir "share/fcitx5/data/QuickPhrase.mb" + (lib.concatStringsSep "\n" + (lib.mapAttrsToList (name: value: "${name} ${value}") cfg.quickPhrase))) + ] ++ lib.optionals (cfg.quickPhraseFiles != { }) [ + (pkgs.linkFarm "quickPhraseFiles" (lib.mapAttrs' + (name: value: lib.nameValuePair ("share/fcitx5/data/quickphrase.d/${name}.mb") value) + cfg.quickPhraseFiles)) + ]; + environment.variables = { GTK_IM_MODULE = "fcitx"; QT_IM_MODULE = "fcitx"; -- cgit 1.4.1