diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 0f6a2be4bfb..009d938554c 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -9728,4 +9728,10 @@ github = "wenngle"; githubId = 63376671; }; + yanganto = { + name = "Antonio Yang"; + email = "yanganto@gmail.com"; + github = "yanganto"; + githubId = 10803111; + }; } diff --git a/nixos/modules/i18n/input-method/default.nix b/nixos/modules/i18n/input-method/default.nix index 9548a249efa..0d6dd3399bf 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 fcitx: A customizable lightweight input method, extra input engines can be added using i18n.inputMethod.fcitx.engines. nabi: A Korean input method based on XIM. Nabi doesn't support Qt 5. uim: The universal input method, is a library with a XIM bridge. uim mainly support Chinese, Japanese and Korean. + hime: An extremely easy-to-use input method framework. ''; }; diff --git a/nixos/modules/i18n/input-method/default.xml b/nixos/modules/i18n/input-method/default.xml index 117482fb0d5..e15f6669081 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. + + + Hime: An extremely easy-to-use input method framework. + +
IBus @@ -241,4 +246,24 @@ i18n.inputMethod = { used to choose uim toolbar.
+
+ Hime + + + 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... + + + + The following snippet can be used to configure Hime: + + + +i18n.inputMethod = { + enabled = "hime"; +}; + +
diff --git a/nixos/modules/i18n/input-method/hime.nix b/nixos/modules/i18n/input-method/hime.nix new file mode 100644 index 00000000000..a1b346a0f84 --- /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 00000000000..cce1ec49515 --- /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 672c7e5a3da..f8e523c634d 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 { };