71 lines
2.3 KiB
Nix
71 lines
2.3 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
let
|
|
cfg = config.i18n.inputMethod;
|
|
|
|
gtk2_cache = pkgs.runCommand "gtk2-immodule.cache"
|
|
{ preferLocalBuild = true;
|
|
allowSubstitutes = false;
|
|
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
|
|
'';
|
|
|
|
gtk3_cache = pkgs.runCommand "gtk3-immodule.cache"
|
|
{ preferLocalBuild = true;
|
|
allowSubstitutes = false;
|
|
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
|
|
{
|
|
options.i18n = {
|
|
inputMethod = {
|
|
enabled = mkOption {
|
|
type = types.nullOr (types.enum [ "ibus" "fcitx" "nabi" "uim" ]);
|
|
default = null;
|
|
example = "fcitx";
|
|
description = ''
|
|
Select the enabled input method. Input methods is a software to input symbols that are not available on standard input devices.
|
|
|
|
Input methods are specially used to input Chinese, Japanese and Korean characters.
|
|
|
|
Currently the following input methods are available in NixOS:
|
|
|
|
<itemizedlist>
|
|
<listitem><para>ibus: The intelligent input bus, extra input engines can be added using <literal>i18n.inputMethod.ibus.engines</literal>.</para></listitem>
|
|
<listitem><para>fcitx: A customizable lightweight input method, extra input engines can be added using <literal>i18n.inputMethod.fcitx.engines</literal>.</para></listitem>
|
|
<listitem><para>nabi: A Korean input method based on XIM. Nabi doesn't support Qt 5.</para></listitem>
|
|
<listitem><para>uim: The universal input method, is a library with a XIM bridge. uim mainly support Chinese, Japanese and Korean.</para></listitem>
|
|
</itemizedlist>
|
|
'';
|
|
};
|
|
|
|
package = mkOption {
|
|
internal = true;
|
|
type = types.path;
|
|
default = null;
|
|
description = ''
|
|
The input method method package.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf (cfg.enabled != null) {
|
|
environment.systemPackages = [ cfg.package gtk2_cache gtk3_cache ];
|
|
};
|
|
|
|
meta = {
|
|
maintainers = with lib.maintainers; [ ericsagnes ];
|
|
doc = ./default.xml;
|
|
};
|
|
|
|
}
|