summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntonio Yang <yanganto@gmail.com>2020-09-17 00:01:57 +0800
committerAntonio Yang <yanganto@gmail.com>2020-10-03 22:27:22 +0800
commit0c138794af79ddc3907b6e3375edde5aaec08001 (patch)
treeee11a07bdb58a2124cbdfe1a70b4406e2d547ebf
parent9d71f4f2e20eb6b0f51e99212e66d42c0b89cf2d (diff)
input methods: add hime
-rw-r--r--nixos/modules/i18n/input-method/default.nix3
-rw-r--r--nixos/modules/i18n/input-method/default.xml25
-rw-r--r--nixos/modules/i18n/input-method/hime.nix28
-rw-r--r--pkgs/tools/inputmethods/hime/default.nix40
-rw-r--r--pkgs/top-level/all-packages.nix7
5 files changed, 102 insertions, 1 deletions
diff --git a/nixos/modules/i18n/input-method/default.nix b/nixos/modules/i18n/input-method/default.nix
index 9548a249efa0..0d6dd3399bfc 100644
--- a/nixos/modules/i18n/input-method/default.nix
+++ b/nixos/modules/i18n/input-method/default.nix
@@ -29,7 +29,7 @@ in
options.i18n = {
inputMethod = {
enabled = mkOption {
- type = types.nullOr (types.enum [ "ibus" "fcitx" "nabi" "uim" ]);
+ type = types.nullOr (types.enum [ "ibus" "fcitx" "nabi" "uim" "hime" ]);
default = null;
example = "fcitx";
description = ''
@@ -44,6 +44,7 @@ in
<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>
+ <listitem><para>hime: An extremely easy-to-use input method framework.</para></listitem>
</itemizedlist>
'';
};
diff --git a/nixos/modules/i18n/input-method/default.xml b/nixos/modules/i18n/input-method/default.xml
index 117482fb0d57..e15f66690819 100644
--- a/nixos/modules/i18n/input-method/default.xml
+++ b/nixos/modules/i18n/input-method/default.xml
@@ -35,6 +35,11 @@
Uim: The universal input method, is a library with a XIM bridge.
</para>
</listitem>
+ <listitem>
+ <para>
+ Hime: An extremely easy-to-use input method framework.
+ </para>
+ </listitem>
</itemizedlist>
<section xml:id="module-services-input-methods-ibus">
<title>IBus</title>
@@ -241,4 +246,24 @@ i18n.inputMethod = {
used to choose uim toolbar.
</para>
</section>
+ <section xml:id="module-services-input-methods-hime">
+ <title>Hime</title>
+
+ <para>
+ Hime is an extremely easy-to-use input method framework. It is lightweight,
+ stable, powerful and supports many commonly used input methods, including
+ Cangjie, Zhuyin, Dayi, Rank, Shrimp, Greek, Japanese Anthy, Korean Pinyin,
+ Latin Alphabet, Rancang hunting birds, cool music, etc...
+ </para>
+
+ <para>
+ The following snippet can be used to configure Hime:
+ </para>
+
+<programlisting>
+i18n.inputMethod = {
+ <link linkend="opt-i18n.inputMethod.enabled">enabled</link> = "hime";
+};
+</programlisting>
+ </section>
</chapter>
diff --git a/nixos/modules/i18n/input-method/hime.nix b/nixos/modules/i18n/input-method/hime.nix
new file mode 100644
index 000000000000..a1b346a0f840
--- /dev/null
+++ b/nixos/modules/i18n/input-method/hime.nix
@@ -0,0 +1,28 @@
+{ config, pkgs, ... }:
+
+with lib;
+{
+ options = {
+ i18n.inputMethod.hime = {
+ enableChewing = mkOption {
+ type = with types; nullOr bool;
+ default = null;
+ description = "enable chewing input method";
+ };
+ enableAnthy = mkOption {
+ type = with types; nullOr bool;
+ default = null;
+ description = "enable anthy input method";
+ };
+ };
+ };
+
+ config = mkIf (config.i18n.inputMethod.enabled == "hime") {
+ environment.variables = {
+ GTK_IM_MODULE = "hime";
+ QT_IM_MODULE = "hime";
+ XMODIFIERS = "@im=hime";
+ };
+ services.xserver.displayManager.sessionCommands = "${pkgs.hime}/bin/hime &";
+ };
+}
diff --git a/pkgs/tools/inputmethods/hime/default.nix b/pkgs/tools/inputmethods/hime/default.nix
new file mode 100644
index 000000000000..cce1ec495150
--- /dev/null
+++ b/pkgs/tools/inputmethods/hime/default.nix
@@ -0,0 +1,40 @@
+{
+stdenv, fetchFromGitHub, pkgconfig, which, gtk2, gtk3, qt4, qt5, libXtst, lib,
+enableChewing ? true, libchewing,
+enableAnthy ? true, anthy,
+}:
+
+stdenv.mkDerivation {
+ name = "hime";
+ version = "unstable-2020-06-27";
+
+ src = fetchFromGitHub {
+ owner = "hime-ime";
+ repo = "hime";
+ rev = "c89751a58836906e6916355fd037fc74fd7a7a15";
+ sha256 = "024w67q0clzxigsrvqbxpiy8firjvrqi7wbkkcapzzhzapv3nm8x";
+ };
+
+ nativeBuildInputs = [ which pkgconfig ];
+ buildInputs = [ libXtst gtk2 gtk3 qt4 qt5.qtbase ]
+ ++ lib.optional enableChewing libchewing
+ ++ lib.optional enableAnthy anthy;
+
+ patchPhase = ''
+ patchShebangs configure
+ '';
+
+ # The configure script already auto-detect libchewing and anthy,
+ # so we do not need additional flags for libchewing or anthy
+ configureFlags = [ "--disable-lib64" "--disable-qt5-immodule" ];
+
+
+ meta = with stdenv.lib; {
+ homepage = "http://hime-ime.github.io/";
+ downloadPage = "https://github.com/hime-ime/hime/downloads";
+ description = "A useful input method engine for Asia region";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ yanganto ];
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 588c79b785d7..1bc619dce8eb 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5596,6 +5596,13 @@ in
nabi = callPackage ../tools/inputmethods/nabi { };
+ hime = callPackage ../tools/inputmethods/hime {};
+
+ hime-all = callPackage ../tools/inputmethods/hime {
+ enableChewing = true;
+ enableAnthy = true;
+ };
+
nahid-fonts = callPackage ../data/fonts/nahid-fonts { };
namazu = callPackage ../tools/text/namazu { };