1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 19:46:05 +01:00
home-manager/modules/i18n/input-method/default.nix
Austin Horstman b8bb556ce5 maintainers: remove duplicate HM entries
We can remove duplicate entries and redirect to the nixpkgs entry.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-07-04 09:20:48 -05:00

140 lines
3.4 KiB
Nix

{
config,
pkgs,
lib,
...
}:
let
cfg = config.i18n.inputMethod;
allowedTypes = lib.types.enum [
"fcitx"
"fcitx5"
"nabi"
"uim"
"hime"
"kime"
];
gtk2Cache =
pkgs.runCommandLocal "gtk2-immodule.cache"
{
buildInputs = [
pkgs.gtk2
cfg.package
];
}
''
mkdir -p $out/etc/gtk-2.0/
GTK_PATH=${cfg.package}/lib/gtk-2.0/ \
gtk-query-immodules-2.0 > $out/etc/gtk-2.0/immodules.cache
'';
gtk3Cache =
pkgs.runCommandLocal "gtk3-immodule.cache"
{
buildInputs = [
pkgs.gtk3
cfg.package
];
}
''
mkdir -p $out/etc/gtk-3.0/
GTK_PATH=${cfg.package}/lib/gtk-3.0/ \
gtk-query-immodules-3.0 > $out/etc/gtk-3.0/immodules.cache
'';
in
{
imports = [
./fcitx5.nix
./hime.nix
./kime.nix
./nabi.nix
./uim.nix
];
options.i18n = {
inputMethod = {
enable = lib.mkEnableOption "an additional input method type" // {
default = cfg.enabled != null;
defaultText = lib.literalMD "`true` if the deprecated option `enabled` is set, false otherwise";
};
enabled = lib.mkOption {
type = lib.types.nullOr allowedTypes;
default = null;
example = "fcitx5";
description = "Deprecated - use `type` and `enable = true` instead";
};
type = lib.mkOption {
type = lib.types.nullOr allowedTypes;
default = cfg.enabled;
defaultText = lib.literalMD "The value of the deprecated option `enabled`, defaulting to null";
example = "fcitx5";
description = ''
Select the enabled input method. Input methods are software to input
symbols that are not available on standard input devices.
Input methods are especially used to input Chinese, Japanese and
Korean characters.
Currently the following input methods are available in Home Manager:
`fcitx5`
: A customizable lightweight input method.
The next generation of fcitx.
Addons (including engines, dictionaries, skins) can be added using
[](#opt-i18n.inputMethod.fcitx5.addons).
`nabi`
: A Korean input method based on XIM. Nabi doesn't support Qt 5.
`uim`
: The "universal input method" is a library with an XIM bridge.
uim mainly supports Chinese, Japanese and Korean.
`hime`
: An extremely easy-to-use input method framework.
`kime`
: A Korean IME.
'';
};
package = lib.mkOption {
internal = true;
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
The input method method package.
'';
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
(lib.hm.assertions.assertPlatform "i18n.inputMethod" pkgs lib.platforms.linux)
{
assertion = cfg.enabled != "fcitx";
message = "fcitx has been removed, please use fcitx5 instead";
}
];
warnings =
lib.optional (cfg.enabled != null)
"i18n.inputMethod.enabled will be removed in a future release. Please use .type, and .enable = true instead";
home.packages = [
cfg.package
gtk2Cache
gtk3Cache
];
};
meta.maintainers = with lib.maintainers; [
awwpotato
kranzes
];
}