nixpkgs/nixos/modules/i18n/input-method/fcitx5.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

49 lines
1.2 KiB
Nix
Raw Normal View History

2020-12-13 03:29:58 +00:00
{ config, pkgs, lib, ... }:
with lib;
let
im = config.i18n.inputMethod;
cfg = im.fcitx5;
addons = cfg.addons ++ optional cfg.enableRimeData pkgs.rime-data;
fcitx5Package = pkgs.fcitx5-with-addons.override { inherit addons; };
whetherRimeDataDir = any (p: p.pname == "fcitx5-rime") cfg.addons;
2021-06-01 23:50:11 +00:00
in {
options = {
i18n.inputMethod.fcitx5 = {
addons = mkOption {
type = with types; listOf package;
default = [];
example = literalExpression "with pkgs; [ fcitx5-rime ]";
description = lib.mdDoc ''
2021-06-01 23:50:11 +00:00
Enabled Fcitx5 addons.
'';
2020-12-13 03:29:58 +00:00
};
enableRimeData = mkEnableOption (lib.mdDoc "default rime-data with fcitx5-rime");
2020-12-13 03:29:58 +00:00
};
2021-06-01 23:50:11 +00:00
};
2020-12-13 03:29:58 +00:00
2021-06-01 23:50:11 +00:00
config = mkIf (im.enabled == "fcitx5") {
i18n.inputMethod.package = fcitx5Package;
2020-12-13 03:29:58 +00:00
environment = mkMerge [{
variables = {
GTK_IM_MODULE = "fcitx";
QT_IM_MODULE = "fcitx";
XMODIFIERS = "@im=fcitx";
QT_PLUGIN_PATH = [ "${fcitx5Package}/${pkgs.qt6.qtbase.qtPluginPrefix}" ];
};
}
(mkIf whetherRimeDataDir {
pathsToLink = [
"/share/rime-data"
];
variables = {
NIX_RIME_DATA_DIR = "/run/current-system/sw/share/rime-data";
};
})];
2021-06-01 23:50:11 +00:00
};
}