diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml
index c2d1563e0a5..393f0fdeb40 100644
--- a/nixos/doc/manual/release-notes/rl-unstable.xml
+++ b/nixos/doc/manual/release-notes/rl-unstable.xml
@@ -44,6 +44,7 @@ nixos.path = ./nixpkgs-unstable-2015-12-06/nixos;
services/networking/pdnsd.nix
services/web-apps/pump.io.nix
services/security/haka.nix
+ i18n/inputMethod/default.nix
@@ -197,6 +198,32 @@ fileSystems."/example" = {
services.hardware.opengl.extraPackages{,32} instead. You can
also specify VDPAU drivers there.
+
+
+
+ programs.ibus moved to i18n.inputMethod.ibus.
+ The option programs.ibus.plugins changed to i18n.inputMethod.ibus.engines
+ and the option to enable ibus changed from programs.ibus.enable to
+ i18n.inputMethod.enabled.
+ i18n.inputMethod.enabled should be set to the used input method name,
+ "ibus" for ibus.
+ An example of the new style:
+
+
+i18n.inputMethod.enabled = "ibus";
+i18n.inputMethod.ibus.engines = with pkgs.ibus-engines; [ anthy mozc ];
+
+
+That is equivalent to the old version:
+
+
+programs.ibus.enable = true;
+programs.ibus.plugins = with pkgs; [ ibus-anthy mozc ];
+
+
+
+
+
@@ -215,6 +242,12 @@ fileSystems."/example" = {
NixOS.
+
+ Input method support was improved. New NixOS modules (fcitx, nabi and uim),
+ fcitx engines (chewing, hangul, m17n, mozc and table-other) and ibus engines (hangul and m17n)
+ have been added.
+
+
diff --git a/nixos/modules/i18n/inputMethod/default.nix b/nixos/modules/i18n/inputMethod/default.nix
new file mode 100644
index 00000000000..7e6a25bfb08
--- /dev/null
+++ b/nixos/modules/i18n/inputMethod/default.nix
@@ -0,0 +1,29 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+{
+ 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:
+
+
+ ibus: The intelligent input bus, extra input engines can be added using i18n.inputMethod.ibus.engines.
+ 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.
+
+ '';
+ };
+ };
+ };
+}
diff --git a/nixos/modules/i18n/inputMethod/fcitx.nix b/nixos/modules/i18n/inputMethod/fcitx.nix
new file mode 100644
index 00000000000..f168f445170
--- /dev/null
+++ b/nixos/modules/i18n/inputMethod/fcitx.nix
@@ -0,0 +1,42 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.i18n.inputMethod.fcitx;
+ fcitxPackage = pkgs.fcitx-with-plugins.override { plugins = cfg.engines; };
+ fcitxEngine = types.package // {
+ name = "fcitx-engine";
+ check = x: (lib.types.package.check x) && (attrByPath ["meta" "isFcitxEngine"] false x);
+ };
+in
+{
+ options = {
+
+ i18n.inputMethod.fcitx = {
+ engines = mkOption {
+ type = with types; listOf fcitxEngine;
+ default = [];
+ example = literalExample "with pkgs.fcitx-engines; [ mozc hangul ]";
+ description = ''
+ Enabled Fcitx engines.
+ Available engines can be found by running `nix-env "<nixpkgs>" . -qaP -A fcitx-engines`.
+ '';
+ };
+ };
+
+ };
+
+ config = mkIf (config.i18n.inputMethod.enabled == "fcitx") {
+ environment.systemPackages = [ fcitxPackage ];
+ gtkPlugins = [ fcitxPackage ];
+ qtPlugins = [ fcitxPackage ];
+
+ environment.variables = {
+ GTK_IM_MODULE = "fcitx";
+ QT_IM_MODULE = "fcitx";
+ XMODIFIERS = "@im=fcitx";
+ };
+ services.xserver.displayManager.sessionCommands = "${fcitxPackage}/bin/fcitx";
+ };
+}
diff --git a/nixos/modules/i18n/inputMethod/ibus.nix b/nixos/modules/i18n/inputMethod/ibus.nix
new file mode 100644
index 00000000000..86059751a3d
--- /dev/null
+++ b/nixos/modules/i18n/inputMethod/ibus.nix
@@ -0,0 +1,43 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.i18n.inputMethod.ibus;
+ ibusPackage = pkgs.ibus-with-plugins.override { plugins = cfg.engines; };
+ ibusEngine = types.package // {
+ name = "ibus-engine";
+ check = x: (lib.types.package.check x) && (attrByPath ["meta" "isIbusEngine"] false x);
+ };
+in
+{
+ options = {
+ i18n.inputMethod.ibus = {
+ engines = mkOption {
+ type = with types; listOf ibusEngine;
+ default = [];
+ example = literalExample "with pkgs.ibus-engines; [ mozc hangul ]";
+ description = ''
+ Enabled IBus engines.
+ Available engines can be found by running `nix-env "<nixpkgs>" . -qaP -A ibus-engines`.
+ '';
+ };
+ };
+ };
+
+ config = mkIf (config.i18n.inputMethod.enabled == "ibus") {
+ # Without dconf enabled it is impossible to use IBus
+ environment.systemPackages = [ ibusPackage pkgs.gnome3.dconf ];
+
+ gtkPlugins = [ pkgs.ibus ];
+ qtPlugins = [ pkgs.ibus-qt ];
+
+ environment.variables = {
+ GTK_IM_MODULE = "ibus";
+ QT_IM_MODULE = "ibus";
+ XMODIFIERS = "@im=ibus";
+ };
+
+ services.xserver.displayManager.sessionCommands = "${ibusPackage}/bin/ibus-daemon --daemonize --xim --cache=none";
+ };
+}
diff --git a/nixos/modules/i18n/inputMethod/nabi.nix b/nixos/modules/i18n/inputMethod/nabi.nix
new file mode 100644
index 00000000000..8c396595513
--- /dev/null
+++ b/nixos/modules/i18n/inputMethod/nabi.nix
@@ -0,0 +1,17 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+{
+ config = mkIf (config.i18n.inputMethod.enabled == "nabi") {
+ environment.systemPackages = [ pkgs.nabi ];
+ qtPlugins = [ pkgs.nabi ];
+
+ environment.variables = {
+ GTK_IM_MODULE = "nabi";
+ QT_IM_MODULE = "nabi";
+ XMODIFIERS = "@im=nabi";
+ };
+
+ services.xserver.displayManager.sessionCommands = "${pkgs.nabi}/bin/nabi &";
+ };
+}
diff --git a/nixos/modules/i18n/inputMethod/uim.nix b/nixos/modules/i18n/inputMethod/uim.nix
new file mode 100644
index 00000000000..401e1932f70
--- /dev/null
+++ b/nixos/modules/i18n/inputMethod/uim.nix
@@ -0,0 +1,39 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.i18n.inputMethod.uim;
+in
+{
+ options = {
+
+ i18n.inputMethod.uim = {
+ toolbar = mkOption {
+ type = types.enum [ "gtk" "gtk3" "gtk-systray" "gtk3-systray" "qt4" ];
+ default = "gtk";
+ example = "gtk-systray";
+ description = ''
+ selected UIM toolbar.
+ '';
+ };
+ };
+
+ };
+
+ config = mkIf (config.i18n.inputMethod.enabled == "uim") {
+ environment.systemPackages = [ pkgs.uim ];
+ gtkPlugins = [ pkgs.uim ];
+ qtPlugins = [ pkgs.uim ];
+
+ environment.variables = {
+ GTK_IM_MODULE = "uim";
+ QT_IM_MODULE = "uim";
+ XMODIFIERS = "@im=uim";
+ };
+ services.xserver.displayManager.sessionCommands = ''
+ ${pkgs.uim}/bin/uim-xim &
+ ${pkgs.uim}/bin/uim-toolbar-${cfg.toolbar} &
+ '';
+ };
+}
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2509af7c0f2..33245b2174d 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -43,6 +43,11 @@
./hardware/video/nvidia.nix
./hardware/video/ati.nix
./hardware/video/webcam/facetimehd.nix
+ ./i18n/inputMethod/default.nix
+ ./i18n/inputMethod/fcitx.nix
+ ./i18n/inputMethod/ibus.nix
+ ./i18n/inputMethod/nabi.nix
+ ./i18n/inputMethod/uim.nix
./installer/tools/auto-upgrade.nix
./installer/tools/nixos-checkout.nix
./installer/tools/tools.nix
@@ -66,7 +71,6 @@
./programs/environment.nix
./programs/freetds.nix
./programs/fish.nix
- ./programs/ibus.nix
./programs/kbdlight.nix
./programs/light.nix
./programs/man.nix
diff --git a/nixos/modules/programs/ibus.nix b/nixos/modules/programs/ibus.nix
deleted file mode 100644
index a42753a292b..00000000000
--- a/nixos/modules/programs/ibus.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-with lib;
-
-let
- cfg = config.programs.ibus;
-in
-{
- options = {
-
- programs.ibus = {
- enable = mkOption {
- type = types.bool;
- default = false;
- example = true;
- description = "Enable IBus input method";
- };
- plugins = mkOption {
- type = lib.types.listOf lib.types.path;
- default = [];
- description = ''
- IBus plugin packages
- '';
- };
- };
-
- };
-
- config = mkIf cfg.enable {
- environment.systemPackages = [ pkgs.ibus pkgs.gnome3.dconf ];
-
- gtkPlugins = [ pkgs.ibus ];
- qtPlugins = [ pkgs.ibus-qt ];
-
- environment.variables =
- let
- env = pkgs.buildEnv {
- name = "ibus-env";
- paths = [ pkgs.ibus ] ++ cfg.plugins;
- };
- in {
- GTK_IM_MODULE = "ibus";
- QT_IM_MODULE = "ibus";
- XMODIFIERS = "@im=ibus";
-
- IBUS_COMPONENT_PATH = "${env}/share/ibus/component";
- };
-
- services.xserver.displayManager.sessionCommands = "${pkgs.ibus}/bin/ibus-daemon --daemonize --xim --cache=none";
- };
-}
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 6e10b47f03c..6d5ee6fc84e 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -59,6 +59,9 @@ with lib;
# Tarsnap
(mkRenamedOptionModule [ "services" "tarsnap" "config" ] [ "services" "tarsnap" "archives" ])
+ # ibus
+ (mkRenamedOptionModule [ "programs" "ibus" "plugins" ] [ "i18n" "inputMethod" "ibus" "engines" ])
+
# proxy
(mkRenamedOptionModule [ "nix" "proxy" ] [ "networking" "proxy" "default" ])
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-anthy/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-anthy/default.nix
new file mode 100644
index 00000000000..88ba436207c
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-anthy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, cmake, fcitx, anthy, gettext, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "fcitx-anthy-${version}";
+ version = "0.2.2";
+
+ src = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-anthy/${name}.tar.xz";
+ sha256 = "0ayrzfx95670k86y19bzl6i6w98haaln3x8dxpb39a5dwgz59pf8";
+ };
+
+ buildInputs = [ cmake fcitx anthy gettext pkgconfig ];
+
+ preInstall = ''
+ substituteInPlace src/cmake_install.cmake \
+ --replace ${fcitx} $out
+ '';
+
+ meta = with stdenv.lib; {
+ isFcitxEngine = true;
+ description = "Fcitx Wrapper for anthy";
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ iyzsong ericsagnes ];
+ };
+
+}
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-chewing/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-chewing/default.nix
new file mode 100644
index 00000000000..58695434cb6
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-chewing/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake, fcitx, gettext, libchewing, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "fcitx-chewing-${version}";
+ version = "0.2.2";
+
+ src = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-chewing/${name}.tar.xz";
+ sha256 = "0l548xdx2fvjya1ixp37pn382yak0m4kwfh9lgh7l3y2sblqw9zs";
+ };
+
+ buildInputs = [ cmake fcitx gettext libchewing pkgconfig ];
+
+ preInstall = ''
+ substituteInPlace src/cmake_install.cmake \
+ --replace ${fcitx} $out
+ substituteInPlace data/cmake_install.cmake \
+ --replace ${fcitx} $out
+ '';
+
+ meta = with stdenv.lib; {
+ isFcitxEngine = true;
+ homepage = "https://github.com/fcitx/fcitx-chewing";
+ downloadPage = "http://download.fcitx-im.org/fcitx-chewing/";
+ description = "Fcitx engine for chewing";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+
+}
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-hangul/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-hangul/default.nix
new file mode 100644
index 00000000000..54b5335d9bb
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-hangul/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, cmake, fcitx, libhangul, gettext, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "fcitx-hangul-${version}";
+ version = "0.3.0";
+
+ src = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-hangul/${name}.tar.xz";
+ sha256 = "1jq78nczliw6pnhfac8hspffybrry6syk17y0wwcq05j3r3nd2lp";
+ };
+
+ buildInputs = [ cmake fcitx libhangul gettext pkgconfig ];
+
+ preInstall = ''
+ substituteInPlace src/cmake_install.cmake \
+ --replace ${fcitx} $out
+ substituteInPlace data/cmake_install.cmake \
+ --replace ${fcitx} $out
+ '';
+
+ meta = with stdenv.lib; {
+ isFcitxEngine = true;
+ homepage = "https://github.com/fcitx/fcitx-hangul";
+ downloadPage = "http://download.fcitx-im.org/fcitx-hangul/";
+ description = "Fcitx Wrapper for hangul";
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+}
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-m17n/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-m17n/default.nix
new file mode 100644
index 00000000000..ff42bbbbcc8
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-m17n/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, fcitx, gettext, m17n_lib, m17n_db, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "fcitx-m17n-${version}";
+ version = "0.2.3";
+
+ src = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-m17n/${name}.tar.xz";
+ sha256 = "0ffyhsg7bc6525k94kfhnja1h6ajlfprq72d286dp54cksnakyc4";
+ };
+
+ buildInputs = [ cmake fcitx gettext m17n_lib m17n_db pkgconfig ];
+
+ preInstall = ''
+ substituteInPlace im/cmake_install.cmake \
+ --replace ${fcitx} $out
+ '';
+
+ meta = with stdenv.lib; {
+ isFcitxEngine = true;
+ homepage = "https://github.com/fcitx/fcitx-m17n";
+ downloadPage = "http://download.fcitx-im.org/fcitx-table-other/";
+ description = "Fcitx wrapper for m17n";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+
+}
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix
new file mode 100644
index 00000000000..5366fe55877
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-mozc/default.nix
@@ -0,0 +1,117 @@
+{ clangStdenv, fetchFromGitHub, fetchurl, fetchpatch, fetchsvn, gyp, which, ninja,
+ python, pkgconfig, protobuf, gtk, zinnia, qt4, libxcb, tegaki-zinnia-japanese,
+ fcitx, gettext }:
+let
+ japanese_usage_dictionary = fetchsvn {
+ url = "http://japanese-usage-dictionary.googlecode.com/svn/trunk";
+ rev = "10";
+ sha256 = "0pyrpz9c8nxccwpgyr36w314mi8h132cis8ijvlqmmhqxwsi30hm";
+ };
+ icons = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-mozc/fcitx-mozc-icon.tar.gz";
+ sha256 = "10bdjn481jsh32vll7r756l392anz44h6207vjqwby3rplk31np1";
+ };
+in clangStdenv.mkDerivation rec {
+ name = "fcitx-mozc-${version}";
+ version = "2.17.2313.102";
+
+ src = fetchFromGitHub {
+ owner = "google";
+ repo = "mozc";
+ rev = "3306d3314499a54a4064b8b80bbc1bce3f6cfac4";
+ sha256 = "0l7mjlnbm6i1ipni8pg9ym5bjg3rzkaxi9xwmsz2lddv348sqii2";
+ };
+
+ nativeBuildInputs = [ gyp which ninja python pkgconfig ];
+ buildInputs = [ protobuf gtk zinnia qt4 libxcb fcitx gettext ];
+
+ postUnpack = ''
+ rmdir $sourceRoot/src/third_party/japanese_usage_dictionary/
+ ln -s ${japanese_usage_dictionary} $sourceRoot/src/third_party/japanese_usage_dictionary
+ tar -xzf ${icons} -C $sourceRoot
+ '';
+
+ patch_version = "2.17.2313.102.1";
+ patches = [
+ (fetchpatch rec {
+ name = "fcitx-mozc-${patch_version}.patch";
+ url = "https://download.fcitx-im.org/fcitx-mozc/${name}";
+ sha256 = "172c34jkppibvwr9qf9xwgh2hdrmmhyx7nsdj49krxbfdlsy3yy0";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace src/unix/fcitx/mozc.conf \
+ --replace "/usr/share/fcitx/mozc/icon/mozc.png" "mozc"
+ '';
+
+ configurePhase = ''
+ export GYP_DEFINES="document_dir=$out/share/doc/mozc use_libzinnia=1 use_libprotobuf=1"
+ python src/build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc \
+ python src/unix/fcitx/fcitx.gyp gyp --gypdir=${gyp}/bin
+ '';
+
+ preBuildPhase = ''
+ head -n 29 src/server/mozc_server.cc > LICENSE
+ '';
+
+ buildPhase = ''
+ python src/build_mozc.py build -c Release \
+ unix/fcitx/fcitx.gyp:fcitx-mozc \
+ server/server.gyp:mozc_server \
+ gui/gui.gyp:mozc_tool
+ '';
+
+ checkPhase = ''
+ python src/build_mozc.py runtests -c Release
+ '';
+
+ installPhase = ''
+ install -d $out/share/licenses/fcitx-mozc/
+ install -m 644 LICENSE src/data/installer/*.html $out/share/licenses/fcitx-mozc/
+
+ install -d $out/share/doc/mozc
+ install -m 644 src/data/installer/*.html $out/share/doc/mozc/
+
+ install -D -m 755 src/out_linux/Release/mozc_server $out/lib/mozc/mozc_server
+ install -m 755 src/out_linux/Release/mozc_tool $out/lib/mozc/mozc_tool
+
+ install -D -m 755 src/out_linux/Release/fcitx-mozc.so $out/lib/fcitx/fcitx-mozc.so
+ install -D -m 644 src/unix/fcitx/fcitx-mozc.conf $out/share/fcitx/addon/fcitx-mozc.conf
+ install -D -m 644 src/unix/fcitx/mozc.conf $out/share/fcitx/inputmethod/mozc.conf
+
+ install -d $out/share/doc/mozc
+
+ for mofile in src/out_linux/Release/gen/unix/fcitx/po/*.mo
+ do
+ filename=`basename $mofile`
+ lang=$filename.mo
+ install -D -m 644 "$mofile" "$out/share/locale/$lang/LC_MESSAGES/fcitx-mozc.mo"
+ done
+
+ install -d $out/share/fcitx/imicon
+ install -m 644 fcitx-mozc-icons/mozc.png $out/share/fcitx/imicon/mozc.png
+ install -d $out/share/fcitx/mozc/icon
+ install -m 644 fcitx-mozc-icons/mozc.png $out/share/fcitx/mozc/icon/mozc.png
+ install -m 644 fcitx-mozc-icons/mozc-alpha_full.png $out/share/fcitx/mozc/icon/mozc-alpha_full.png
+ install -m 644 fcitx-mozc-icons/mozc-alpha_half.png $out/share/fcitx/mozc/icon/mozc-alpha_half.png
+ install -m 644 fcitx-mozc-icons/mozc-direct.png $out/share/fcitx/mozc/icon/mozc-direct.png
+ install -m 644 fcitx-mozc-icons/mozc-hiragana.png $out/share/fcitx/mozc/icon/mozc-hiragana.png
+ install -m 644 fcitx-mozc-icons/mozc-katakana_full.png $out/share/fcitx/mozc/icon/mozc-katakana_full.png
+ install -m 644 fcitx-mozc-icons/mozc-katakana_half.png $out/share/fcitx/mozc/icon/mozc-katakana_half.png
+ install -m 644 fcitx-mozc-icons/mozc-dictionary.png $out/share/fcitx/mozc/icon/mozc-dictionary.png
+ install -m 644 fcitx-mozc-icons/mozc-properties.png $out/share/fcitx/mozc/icon/mozc-properties.png
+ install -m 644 fcitx-mozc-icons/mozc-tool.png $out/share/fcitx/mozc/icon/mozc-tool.png
+ '';
+
+ meta = with clangStdenv.lib; {
+ isFcitxEngine = true;
+ description = "Fcitx engine for Google japanese input method";
+ homepage = http://code.google.com/p/mozc/;
+ downloadPage = "http://download.fcitx-im.org/fcitx-mozc/";
+ license = licenses.free;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.ericsagnes ];
+ };
+
+}
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-table-other/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-table-other/default.nix
new file mode 100644
index 00000000000..40ef0b33aea
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-table-other/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, fcitx, gettext }:
+
+stdenv.mkDerivation rec {
+ name = "fcitx-table-other-${version}";
+ version = "0.2.3";
+
+ src = fetchurl {
+ url = "http://download.fcitx-im.org/fcitx-table-other/${name}.tar.xz";
+ sha256 = "12fqbsjrpx5pndx2jf7fksrlp01a4yxz62h2vpxrbkpk73ljly4v";
+ };
+
+ buildInputs = [ cmake fcitx gettext ];
+
+ preInstall = ''
+ substituteInPlace tables/cmake_install.cmake \
+ --replace ${fcitx} $out
+ '';
+
+ meta = with stdenv.lib; {
+ isFcitxEngine = true;
+ homepage = "https://github.com/fcitx/fcitx-table-other";
+ downloadPage = "http://download.fcitx-im.org/fcitx-table-other/";
+ description = "Provides some other tables for Fcitx";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+
+}
diff --git a/pkgs/tools/inputmethods/fcitx/fcitx-anthy.nix b/pkgs/tools/inputmethods/fcitx/fcitx-anthy.nix
deleted file mode 100644
index 2099220f2a1..00000000000
--- a/pkgs/tools/inputmethods/fcitx/fcitx-anthy.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, fetchurl, cmake, fcitx, anthy }:
-
-stdenv.mkDerivation rec {
- name = "fcitx-anthy-0.2.1";
-
- meta = with stdenv.lib; {
- description = "Fcitx Wrapper for anthy";
- license = licenses.gpl2Plus;
- platforms = platforms.linux;
- maintainers = with maintainers; [ iyzsong ];
- };
-
- src = fetchurl {
- url = "http://download.fcitx-im.org/fcitx-anthy/${name}.tar.xz";
- sha256 = "13fpfhhxkzbq53h10i3hifa37nngm47jq361i70z22bgcrs8887x";
- };
-
- buildInputs = [ cmake fcitx anthy ];
-
- preInstall = ''
- substituteInPlace src/cmake_install.cmake \
- --replace ${fcitx} $out
- '';
-}
diff --git a/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix b/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix
index fad7862cf3b..428e96e8674 100644
--- a/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix
+++ b/pkgs/tools/inputmethods/fcitx/fcitx-qt5.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "fcitx-qt5-${version}";
- version = "1.0.4";
+ version = "1.0.5";
src = fetchurl {
url = "http://download.fcitx-im.org/fcitx-qt5/${name}.tar.xz";
- sha256 = "070dlmwkim7sg0xwxfcbb46li1jk8yd3rmj0j5fkmgyr12044aml";
+ sha256 = "1pj1b04n8r4kl7jh1qdv0xshgzb3zrmizfa3g5h3yk589h191vwc";
};
buildInputs = [ cmake fcitx extra-cmake-modules qtbase ];
diff --git a/pkgs/tools/inputmethods/fcitx/wrapper.nix b/pkgs/tools/inputmethods/fcitx/wrapper.nix
index d4efb332696..a0ae2618954 100644
--- a/pkgs/tools/inputmethods/fcitx/wrapper.nix
+++ b/pkgs/tools/inputmethods/fcitx/wrapper.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildEnv, fcitx, makeWrapper, plugins }:
+{ stdenv, buildEnv, fcitx, fcitx-configtool, makeWrapper, plugins, kde5 }:
# This is based on the pidgin-with-plugins package.
# Users should be able to configure what plugins are used
@@ -16,7 +16,7 @@ let
drv = buildEnv {
name = "fcitx-with-plugins-" + (builtins.parseDrvName fcitx.name).version;
- paths = [ fcitx ] ++ plugins;
+ paths = [ fcitx fcitx-configtool kde5.fcitx-qt5 ] ++ plugins;
postBuild = ''
# TODO: This could be avoided if buildEnv could be forced to create all directories
diff --git a/pkgs/tools/inputmethods/ibus-anthy/default.nix b/pkgs/tools/inputmethods/ibus-anthy/default.nix
deleted file mode 100644
index 0b2382315a5..00000000000
--- a/pkgs/tools/inputmethods/ibus-anthy/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv, fetchurl, makeWrapper, ibus, anthy, intltool, pkgconfig, glib, gobjectIntrospection, python, pythonPackages }:
-
-stdenv.mkDerivation rec {
- name = "ibus-anthy-${version}";
- version = "1.5.7";
-
- meta = with stdenv.lib; {
- description = "IBus interface to the anthy input method";
- homepage = http://wiki.github.com/fujiwarat/ibus-anthy;
- license = licenses.gpl2Plus;
- platforms = platforms.linux;
- maintainers = with maintainers; [ gebner ];
- };
-
- configureFlags = "--with-anthy-zipcode=${anthy}/share/anthy/zipcode.t";
-
- buildInputs = [ makeWrapper ibus anthy intltool pkgconfig glib gobjectIntrospection python pythonPackages.pygobject3 ];
-
- postFixup = ''
- substituteInPlace $out/share/ibus/component/anthy.xml --replace \$\{exec_prefix\} $out
- for file in "$out"/libexec/*; do
- wrapProgram "$file" \
- --prefix PYTHONPATH : $PYTHONPATH \
- --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH:$out/lib/girepository-1.0
- done
- '';
-
- src = fetchurl {
- url = "https://github.com/ibus/ibus-anthy/releases/download/${version}/${name}.tar.gz";
- sha256 = "00sjrfhghrgkqm72mf39f8sz6wr4fwvvs9mn2alaldhgr5v0c861";
- };
-}
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix
new file mode 100644
index 00000000000..89039745fd9
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, makeWrapper, ibus, anthy, intltool, pkgconfig, glib, gobjectIntrospection,
+ python, pythonPackages, gtk3, libtool, automake, autoconf }:
+
+stdenv.mkDerivation rec {
+ name = "ibus-anthy-${version}";
+ version = "1.5.8";
+
+ meta = with stdenv.lib; {
+ isIbusEngine = true;
+ description = "IBus interface to the anthy input method";
+ homepage = http://wiki.github.com/fujiwarat/ibus-anthy;
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gebner ericsagnes ];
+ };
+
+ preConfigure = "./autogen.sh --prefix=$out";
+
+ configureFlags = "--with-anthy-zipcode=${anthy}/share/anthy/zipcode.t";
+
+ buildInputs = [ makeWrapper ibus anthy intltool pkgconfig glib gobjectIntrospection
+ python pythonPackages.pygobject3 gtk3 libtool automake autoconf ];
+
+ postFixup = ''
+ substituteInPlace $out/share/ibus/component/anthy.xml --replace \$\{exec_prefix\} $out
+ for file in "$out"/libexec/*; do
+ wrapProgram "$file" \
+ --prefix PYTHONPATH : $PYTHONPATH \
+ --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH:$out/lib/girepository-1.0
+ done
+ '';
+
+ src = fetchFromGitHub {
+ owner = "ibus";
+ repo = "ibus-anthy";
+ rev = version;
+ sha256 = "1laxwpnhgihv4dz5cgcz6d0a0880r93n7039ciz1m53hdzapwi4a";
+ };
+}
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix
new file mode 100644
index 00000000000..b682196d5d0
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, gnome, fetchFromGitHub, ibus, libhangul, autoconf, automake, gettext, libtool, librsvg,
+ intltool, pkgconfig, pythonPackages, makeWrapper, gtk3, python }:
+
+stdenv.mkDerivation rec {
+ name = "ibus-hangul-${version}";
+ version = "1.5.0";
+
+ src = fetchFromGitHub {
+ owner = "choehwanjin";
+ repo = "ibus-hangul";
+ rev = version;
+ sha256 = "12l2spr32biqdbz01bzkamgq5gskbi6cd7ai343wqyy1ibjlkmp8";
+ };
+
+ buildInputs = [ ibus libhangul autoconf gettext automake libtool
+ intltool pkgconfig python pythonPackages.pygobject3 gtk3 makeWrapper ];
+
+ preConfigure = ''
+ autoreconf --verbose --force --install
+ intltoolize --automake --force --copy
+ '';
+
+ postInstall = ''
+ wrapProgram $out/bin/ibus-setup-hangul \
+ --prefix PYTHONPATH : $PYTHONPATH \
+ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+ --prefix GDK_PIXBUF_MODULE_FILE : ${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \
+ --prefix LD_LIBRARY_PATH : ${libhangul}/lib
+ '';
+
+ meta = with stdenv.lib; {
+ isIbusEngine = true;
+ description = "Ibus Hangul engine.";
+ homepage = https://github.com/choehwanjin/ibus-hangul;
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+}
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
new file mode 100644
index 00000000000..30329c4306f
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, ibus, m17n_lib, m17n_db, automake, autoconf,
+ gettext, libtool, pkgconfig, python, pythonPackages }:
+
+stdenv.mkDerivation rec {
+ name = "ibus-m17n-${version}";
+ version = "1.3.4";
+
+ src = fetchFromGitHub {
+ owner = "ibus";
+ repo = "ibus-m17n";
+ rev = version;
+ sha256 = "1n0bvgc4jyksgvzrw5zs2pxcpxcn3gcc0j2kasbznm34fpv3frsr";
+ };
+
+ buildInputs = [
+ ibus m17n_lib m17n_db automake autoconf gettext
+ libtool pkgconfig python pythonPackages.pygobject3
+ ];
+
+ preConfigure = ''
+ autoreconf --verbose --force --install
+ '';
+
+ meta = with stdenv.lib; {
+ isIbusEngine = true;
+ description = "m17n engine for ibus.";
+ homepage = https://github.com.com/ibus/ibus-m17n;
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
+ };
+}
diff --git a/pkgs/tools/inputmethods/mozc/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
similarity index 73%
rename from pkgs/tools/inputmethods/mozc/default.nix
rename to pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
index 20789a33a0c..e06d2b004ee 100644
--- a/pkgs/tools/inputmethods/mozc/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
@@ -7,33 +7,41 @@ let
sha256 = "0pyrpz9c8nxccwpgyr36w314mi8h132cis8ijvlqmmhqxwsi30hm";
};
in clangStdenv.mkDerivation rec {
- name = "mozc-${version}";
- version = "2015-05-02";
+ name = "ibus-mozc-${version}";
+ version = "2.17.2313.102";
meta = with clangStdenv.lib; {
- description = "Japanese input method from Google";
- homepage = http://code.google.com/p/mozc/;
- license = licenses.bsd3;
- platforms = platforms.linux;
- maintainers = [ maintainers.gebner ];
+ isIbusEngine = true;
+ description = "Japanese input method from Google";
+ homepage = http://code.google.com/p/mozc/;
+ license = licenses.free;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ gebner ericsagnes ];
};
nativeBuildInputs = [ gyp which ninja python pkgconfig ];
buildInputs = [ protobuf ibus gtk zinnia qt4 libxcb ];
src = fetchFromGitHub {
- owner = "google";
- repo = "mozc";
- rev = "d9783737ecfcb68c3d98d84e7052d716f4d0e0cb";
- sha256 = "52a83658e2e4a7b38e31a4085682be24c9c5f4c51a01578598a30b9833827b72";
+ owner = "google";
+ repo = "mozc";
+ rev = "3306d3314499a54a4064b8b80bbc1bce3f6cfac4";
+ sha256 = "0l7mjlnbm6i1ipni8pg9ym5bjg3rzkaxi9xwmsz2lddv348sqii2";
};
+
postUnpack = ''
+ rmdir $sourceRoot/src/third_party/japanese_usage_dictionary/
ln -s ${japanese_usage_dictionary} $sourceRoot/src/third_party/japanese_usage_dictionary
'';
configurePhase = ''
- export GYP_DEFINES="ibus_mozc_path=$out/lib/ibus-mozc/ibus-engine-mozc ibus_mozc_icon_path=$out/share/ibus-mozc/product_icon.png document_dir=$out/share/doc/mozc zinnia_model_file=${tegaki-zinnia-japanese}/share/tegaki/models/zinnia/handwriting-ja.model use_libprotobuf=1"
- python src/build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc
+ export GYP_DEFINES="document_dir=$out/share/doc/mozc use_libzinnia=1 use_libprotobuf=1 ibus_mozc_path=$out/lib/ibus-mozc/ibus-engine-mozc"
+ python src/build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc \
+ python src/unix/fcitx/fcitx.gyp gyp --gypdir=${gyp}/bin
+ '';
+
+ preBuildPhase = ''
+ head -n 29 src/server/mozc_server.cc > LICENSE
'';
buildPhase = ''
@@ -50,6 +58,9 @@ in clangStdenv.mkDerivation rec {
'';
installPhase = ''
+ install -d $out/share/licenses/mozc/
+ install -m 644 LICENSE src/data/installer/*.html $out/share/licenses/mozc/
+
install -D -m 755 src/out_linux/Release/mozc_server $out/lib/mozc/mozc_server
install -m 755 src/out_linux/Release/mozc_tool $out/lib/mozc/mozc_tool
diff --git a/pkgs/tools/inputmethods/ibus-table-others/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-table-others/default.nix
similarity index 66%
rename from pkgs/tools/inputmethods/ibus-table-others/default.nix
rename to pkgs/tools/inputmethods/ibus-engines/ibus-table-others/default.nix
index f356bcdee85..13d9df5de08 100644
--- a/pkgs/tools/inputmethods/ibus-table-others/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-table-others/default.nix
@@ -20,10 +20,11 @@ stdenv.mkDerivation rec {
'';
meta = with stdenv.lib; {
- description = "Various table-based input methods for IBus";
- homepage = https://github.com/moebiuscurve/ibus-table-others;
- license = licenses.gpl3;
- platforms = platforms.linux;
- maintainers = with maintainers; [ mudri ];
+ isIbusEngine = true;
+ description = "Various table-based input methods for IBus";
+ homepage = https://github.com/moebiuscurve/ibus-table-others;
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ mudri ];
};
}
diff --git a/pkgs/tools/inputmethods/ibus-table/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
similarity index 61%
rename from pkgs/tools/inputmethods/ibus-table/default.nix
rename to pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
index 58b890b0c92..244169cf46b 100644
--- a/pkgs/tools/inputmethods/ibus-table/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
@@ -12,10 +12,11 @@ stdenv.mkDerivation rec {
buildInputs = [ ibus pkgconfig python3 pythonPackages.pygobject3 ];
meta = with stdenv.lib; {
- description = "An IBus framework for table-based input methods";
- homepage = https://github.com/kaio/ibus-table/wiki;
- license = licenses.lgpl21;
- platforms = platforms.linux;
- maintainers = with maintainers; [ mudri ];
+ isIbusEngine = true;
+ description = "An IBus framework for table-based input methods";
+ homepage = https://github.com/kaio/ibus-table/wiki;
+ license = licenses.lgpl21;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ mudri ];
};
}
diff --git a/pkgs/tools/inputmethods/ibus-qt/default.nix b/pkgs/tools/inputmethods/ibus/ibus-qt.nix
similarity index 100%
rename from pkgs/tools/inputmethods/ibus-qt/default.nix
rename to pkgs/tools/inputmethods/ibus/ibus-qt.nix
diff --git a/pkgs/tools/inputmethods/ibus/wrapper.nix b/pkgs/tools/inputmethods/ibus/wrapper.nix
new file mode 100644
index 00000000000..270a2db7412
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus/wrapper.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildEnv, ibus, makeWrapper, plugins, hicolor_icon_theme }:
+
+let
+drv = buildEnv {
+ name = "ibus-with-plugins-" + (builtins.parseDrvName ibus.name).version;
+
+ paths = [ ibus hicolor_icon_theme ] ++ plugins;
+
+ postBuild = ''
+ # TODO: This could be avoided if buildEnv could be forced to create all directories
+ if [ -L $out/bin ]; then
+ rm $out/bin
+ mkdir $out/bin
+ for i in ${ibus}/bin/*; do
+ ln -s $i $out/bin
+ done
+ fi
+ wrapProgram $out/bin/ibus \
+ --set IBUS_COMPONENT_PATH "$out/share/ibus/component/"
+ wrapProgram $out/bin/ibus-daemon \
+ --set IBUS_COMPONENT_PATH "$out/share/ibus/component/"
+ '';
+ };
+in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })
diff --git a/pkgs/tools/inputmethods/uim/data-hook.patch b/pkgs/tools/inputmethods/uim/data-hook.patch
new file mode 100644
index 00000000000..07fdf873316
--- /dev/null
+++ b/pkgs/tools/inputmethods/uim/data-hook.patch
@@ -0,0 +1,39 @@
+--- a/gtk2/immodule/Makefile.in 2015-11-24 16:21:08.967087208 +0900
++++ b/gtk2/immodule/Makefile.in 2015-11-24 16:22:53.316095150 +0900
+@@ -806,7 +806,6 @@
+
+ install-data-am: install-moduleLTLIBRARIES
+ @$(NORMAL_INSTALL)
+- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+ install-dvi: install-dvi-am
+
+ install-dvi-am:
+@@ -861,7 +860,7 @@
+ ctags distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+- install-data-am install-data-hook install-dvi install-dvi-am \
++ install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man \
+ install-moduleLTLIBRARIES install-pdf install-pdf-am \
+
+--- a/gtk3/immodule/Makefile.in 2015-11-24 16:21:08.971087209 +0900
++++ b/gtk3/immodule/Makefile.in 2015-11-24 16:23:28.251097832 +0900
+@@ -824,7 +824,6 @@
+
+ install-data-am: install-moduleLTLIBRARIES
+ @$(NORMAL_INSTALL)
+- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+ install-dvi: install-dvi-am
+
+ install-dvi-am:
+@@ -879,7 +878,7 @@
+ ctags distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+- install-data-am install-data-hook install-dvi install-dvi-am \
++ install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man \
+ install-moduleLTLIBRARIES install-pdf install-pdf-am
diff --git a/pkgs/tools/inputmethods/uim/default.nix b/pkgs/tools/inputmethods/uim/default.nix
index 19de302e7b1..99a415407c1 100644
--- a/pkgs/tools/inputmethods/uim/default.nix
+++ b/pkgs/tools/inputmethods/uim/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
m17n_db
];
- patches = [ ./immodules_cache.patch ];
+ patches = [ ./data-hook.patch ];
configureFlags = [
"--with-gtk2"
@@ -41,10 +41,11 @@ stdenv.mkDerivation rec {
sha1 = "43b9dbdead6797880e6cfc9c032ecb2d37d42777";
};
- meta = {
- homepage = "http://code.google.com/p/uim/";
+ meta = with stdenv.lib; {
+ homepage = "http://code.google.com/p/uim/";
description = "A multilingual input method framework";
- license = stdenv.lib.licenses.bsd3;
- platforms = stdenv.lib.platforms.linux;
+ license = stdenv.lib.licenses.bsd3;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = with maintainers; [ ericsagnes ];
};
}
diff --git a/pkgs/tools/inputmethods/uim/immodules_cache.patch b/pkgs/tools/inputmethods/uim/immodules_cache.patch
deleted file mode 100644
index c2d08b661e3..00000000000
--- a/pkgs/tools/inputmethods/uim/immodules_cache.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-diff -ru -x '*~' uim-1.8.6.orig/gtk2/immodule/Makefile.am uim-1.8.6/gtk2/immodule/Makefile.am
---- uim-1.8.6.orig/gtk2/immodule/Makefile.am 2013-06-30 13:26:09.000000000 +0900
-+++ uim-1.8.6/gtk2/immodule/Makefile.am 2014-07-13 21:51:26.538400004 +0900
-@@ -1,5 +1,5 @@
- uim_gtk_im_module_path = $(libdir)/gtk-2.0
--uim_gtk_im_module_file = $(DESTDIR)$(sysconfdir)/gtk-2.0/gtk.immodules
-+uim_gtk_im_module_file = $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@/immodules.cache
-
- moduledir = $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@/immodules
-
-@@ -38,48 +38,12 @@
-
- install-data-hook: gtk-rc-get-immodule-file
- if test -z $(DESTDIR); then \
-- if test $(libdir) = $(GTK_LIBDIR); then \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- $(QUERY_COMMAND) > `$(GTK_RC_GET_IMMODULE_FILE)`; \
-- echo "*** \"`$(GTK_RC_GET_IMMODULE_FILE)`\" is updated. ***"; \
-- else \
-- echo "********************** Warning ***********************"; \
-- echo " $(QUERY_COMMAND) not found"; \
-- echo " Please make sure to update"; \
-- echo " \"`$(GTK_RC_GET_IMMODULE_FILE)`\""; \
-- echo " manually."; \
-- echo "******************************************************"; \
-- fi \
-- else \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- $(mkinstalldirs) $(sysconfdir)/gtk-2.0; \
-- GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
-- echo "******************************************************"; \
-- echo " You need to set"; \
-- echo " GTK_IM_MODULE_FILE=$(uim_gtk_im_module_file)"; \
-- echo " environment variable to use this module."; \
-- echo "******************************************************"; \
-- else \
-- echo "********************** Warning ***********************"; \
-- echo " $(QUERY_COMMAND) not found"; \
-- echo " Please make sure to update"; \
-- echo " \"$(uim_gtk_im_module_file)\""; \
-- echo " manually, and set"; \
-- echo " GTK_IM_MODULE_FILE=$(uim_gtk_im_module_file)"; \
-- echo " environment variable to use this module."; \
-- echo "******************************************************"; \
-- fi \
-- fi \
-+ $(mkinstalldirs) $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@; \
-+ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
- fi
- uninstall-hook:
- if test -z $(DESTDIR); then \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- if test $(libdir) = $(GTK_LIBDIR); then \
-- $(QUERY_COMMAND) > `$(GTK_RC_GET_IMMODULE_FILE)`; \
-- else \
-- GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
-- fi \
-- fi \
-+ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
- fi
- else
- install-data-hook:
-diff -ru -x '*~' uim-1.8.6.orig/gtk2/immodule/Makefile.in uim-1.8.6/gtk2/immodule/Makefile.in
---- uim-1.8.6.orig/gtk2/immodule/Makefile.in 2013-06-30 13:27:08.000000000 +0900
-+++ uim-1.8.6/gtk2/immodule/Makefile.in 2014-07-13 22:12:27.947595507 +0900
-@@ -434,7 +434,7 @@
- top_srcdir = @top_srcdir@
- uim_pixmapsdir = @uim_pixmapsdir@
- uim_gtk_im_module_path = $(libdir)/gtk-2.0
--uim_gtk_im_module_file = $(DESTDIR)$(sysconfdir)/gtk-2.0/gtk.immodules
-+uim_gtk_im_module_file = $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@/immodules.cache
- moduledir = $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@/immodules
- @GTK2_TRUE@im_uim_la = im-uim.la
- @GTK2_TRUE@im_uim_la_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
-@@ -875,48 +875,12 @@
-
- @GTK2_TRUE@install-data-hook: gtk-rc-get-immodule-file
- @GTK2_TRUE@ if test -z $(DESTDIR); then \
--@GTK2_TRUE@ if test $(libdir) = $(GTK_LIBDIR); then \
--@GTK2_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK2_TRUE@ $(QUERY_COMMAND) > `$(GTK_RC_GET_IMMODULE_FILE)`; \
--@GTK2_TRUE@ echo "*** \"`$(GTK_RC_GET_IMMODULE_FILE)`\" is updated. ***"; \
--@GTK2_TRUE@ else \
--@GTK2_TRUE@ echo "********************** Warning ***********************"; \
--@GTK2_TRUE@ echo " $(QUERY_COMMAND) not found"; \
--@GTK2_TRUE@ echo " Please make sure to update"; \
--@GTK2_TRUE@ echo " \"`$(GTK_RC_GET_IMMODULE_FILE)`\""; \
--@GTK2_TRUE@ echo " manually."; \
--@GTK2_TRUE@ echo "******************************************************"; \
--@GTK2_TRUE@ fi \
--@GTK2_TRUE@ else \
--@GTK2_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK2_TRUE@ $(mkinstalldirs) $(sysconfdir)/gtk-2.0; \
--@GTK2_TRUE@ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
--@GTK2_TRUE@ echo "******************************************************"; \
--@GTK2_TRUE@ echo " You need to set"; \
--@GTK2_TRUE@ echo " GTK_IM_MODULE_FILE=$(uim_gtk_im_module_file)"; \
--@GTK2_TRUE@ echo " environment variable to use this module."; \
--@GTK2_TRUE@ echo "******************************************************"; \
--@GTK2_TRUE@ else \
--@GTK2_TRUE@ echo "********************** Warning ***********************"; \
--@GTK2_TRUE@ echo " $(QUERY_COMMAND) not found"; \
--@GTK2_TRUE@ echo " Please make sure to update"; \
--@GTK2_TRUE@ echo " \"$(uim_gtk_im_module_file)\""; \
--@GTK2_TRUE@ echo " manually, and set"; \
--@GTK2_TRUE@ echo " GTK_IM_MODULE_FILE=$(uim_gtk_im_module_file)"; \
--@GTK2_TRUE@ echo " environment variable to use this module."; \
--@GTK2_TRUE@ echo "******************************************************"; \
--@GTK2_TRUE@ fi \
--@GTK2_TRUE@ fi \
-+@GTK2_TRUE@ $(mkinstalldirs) $(uim_gtk_im_module_path)/@GTK_BINARY_VERSION@; \
-+@GTK2_TRUE@ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
- @GTK2_TRUE@ fi
- @GTK2_TRUE@uninstall-hook:
- @GTK2_TRUE@ if test -z $(DESTDIR); then \
--@GTK2_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK2_TRUE@ if test $(libdir) = $(GTK_LIBDIR); then \
--@GTK2_TRUE@ $(QUERY_COMMAND) > `$(GTK_RC_GET_IMMODULE_FILE)`; \
--@GTK2_TRUE@ else \
--@GTK2_TRUE@ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
--@GTK2_TRUE@ fi \
--@GTK2_TRUE@ fi \
-+@GTK2_TRUE@ GTK_PATH=$(uim_gtk_im_module_path) $(QUERY_COMMAND) > $(uim_gtk_im_module_file); \
- @GTK2_TRUE@ fi
- @GTK2_FALSE@install-data-hook:
-
-diff -ru -x '*~' uim-1.8.6.orig/gtk3/immodule/Makefile.am uim-1.8.6/gtk3/immodule/Makefile.am
---- uim-1.8.6.orig/gtk3/immodule/Makefile.am 2013-06-30 13:26:20.000000000 +0900
-+++ uim-1.8.6/gtk3/immodule/Makefile.am 2014-07-13 21:55:38.114246503 +0900
-@@ -45,42 +45,11 @@
-
- install-data-hook: gtk3-rc-get-immodule-file
- if test -z $(DESTDIR); then \
-- if test $(libdir) = $(GTK3_LIBDIR); then \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- $(QUERY_COMMAND) --update-cache; \
-- echo "*** \"`$(GTK3_RC_GET_IMMODULE_FILE)`\" is updated. ***"; \
-- else \
-- echo "********************** Warning ***********************"; \
-- echo " $(QUERY_COMMAND) not found"; \
-- echo " Please make sure to update"; \
-- echo " \"`$(GTK3_RC_GET_IMMODULE_FILE)`\""; \
-- echo " manually."; \
-- echo "******************************************************"; \
-- fi \
-- else \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) --update-cache; \
-- else \
-- echo "********************** Warning ***********************"; \
-- echo " $(QUERY_COMMAND) not found"; \
-- echo " Please make sure to update"; \
-- echo " immodules.cache"; \
-- echo " manually, and set"; \
-- echo " GTK_IM_MODULE_FILE=PATH_TO/immodule.cache"; \
-- echo " environment variable to use this module."; \
-- echo "******************************************************"; \
-- fi \
-- fi \
-+ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) > $(uim_gtk3_im_module_path)/@GTK3_BINARY_VERSION@/immodules.cache ; \
- fi
- uninstall-hook:
- if test -z $(DESTDIR); then \
-- if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
-- if test $(libdir) = $(GTK3_LIBDIR); then \
-- $(QUERY_COMMAND) --update-cache; \
-- else \
-- GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) --update-cache; \
-- fi \
-- fi \
-+ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) > $(uim_gtk3_im_module_path)/@GTK3_BINARY_VERSION@/immodules.cache ; \
- fi
- else
- install-data-hook:
-diff -ru -x '*~' uim-1.8.6.orig/gtk3/immodule/Makefile.in uim-1.8.6/gtk3/immodule/Makefile.in
---- uim-1.8.6.orig/gtk3/immodule/Makefile.in 2013-06-30 13:27:08.000000000 +0900
-+++ uim-1.8.6/gtk3/immodule/Makefile.in 2014-07-13 21:56:11.531225832 +0900
-@@ -893,42 +893,11 @@
-
- @GTK3_TRUE@install-data-hook: gtk3-rc-get-immodule-file
- @GTK3_TRUE@ if test -z $(DESTDIR); then \
--@GTK3_TRUE@ if test $(libdir) = $(GTK3_LIBDIR); then \
--@GTK3_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK3_TRUE@ $(QUERY_COMMAND) --update-cache; \
--@GTK3_TRUE@ echo "*** \"`$(GTK3_RC_GET_IMMODULE_FILE)`\" is updated. ***"; \
--@GTK3_TRUE@ else \
--@GTK3_TRUE@ echo "********************** Warning ***********************"; \
--@GTK3_TRUE@ echo " $(QUERY_COMMAND) not found"; \
--@GTK3_TRUE@ echo " Please make sure to update"; \
--@GTK3_TRUE@ echo " \"`$(GTK3_RC_GET_IMMODULE_FILE)`\""; \
--@GTK3_TRUE@ echo " manually."; \
--@GTK3_TRUE@ echo "******************************************************"; \
--@GTK3_TRUE@ fi \
--@GTK3_TRUE@ else \
--@GTK3_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK3_TRUE@ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) --update-cache; \
--@GTK3_TRUE@ else \
--@GTK3_TRUE@ echo "********************** Warning ***********************"; \
--@GTK3_TRUE@ echo " $(QUERY_COMMAND) not found"; \
--@GTK3_TRUE@ echo " Please make sure to update"; \
--@GTK3_TRUE@ echo " immodules.cache"; \
--@GTK3_TRUE@ echo " manually, and set"; \
--@GTK3_TRUE@ echo " GTK_IM_MODULE_FILE=PATH_TO/immodule.cache"; \
--@GTK3_TRUE@ echo " environment variable to use this module."; \
--@GTK3_TRUE@ echo "******************************************************"; \
--@GTK3_TRUE@ fi \
--@GTK3_TRUE@ fi \
-+@GTK3_TRUE@ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) > $(uim_gtk3_im_module_path)/@GTK3_BINARY_VERSION@/immodules.cache ; \
- @GTK3_TRUE@ fi
- @GTK3_TRUE@uninstall-hook:
- @GTK3_TRUE@ if test -z $(DESTDIR); then \
--@GTK3_TRUE@ if type $(QUERY_COMMAND) > /dev/null 2>&1; then \
--@GTK3_TRUE@ if test $(libdir) = $(GTK3_LIBDIR); then \
--@GTK3_TRUE@ $(QUERY_COMMAND) --update-cache; \
--@GTK3_TRUE@ else \
--@GTK3_TRUE@ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) --update-cache; \
--@GTK3_TRUE@ fi \
--@GTK3_TRUE@ fi \
-+@GTK3_TRUE@ GTK_PATH=$(uim_gtk3_im_module_path) $(QUERY_COMMAND) > $(uim_gtk3_im_module_path)/@GTK3_BINARY_VERSION@/immodules.cache ; \
- @GTK3_TRUE@ fi
- @GTK3_FALSE@install-data-hook:
-
-diff -ru -x '*~' uim-1.8.6.orig/qt4/immodule/quiminputcontextplugin.pro.in uim-1.8.6/qt4/immodule/quiminputcontextplugin.pro.in
---- uim-1.8.6.orig/qt4/immodule/quiminputcontextplugin.pro.in 2013-06-30 13:26:20.000000000 +0900
-+++ uim-1.8.6/qt4/immodule/quiminputcontextplugin.pro.in 2014-03-09 11:31:19.388085048 +0900
-@@ -35,4 +35,4 @@
-
- TARGET = uiminputcontextplugin
-
--target.path += @DESTDIR@$$[QT_INSTALL_PLUGINS]/inputmethods
-+target.path += @DESTDIR@@exec_prefix@/lib/qt4/plugins/inputmethods
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 476bdb0b9de..c1968298657 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1172,19 +1172,31 @@ let
m17n_lib = callPackage ../tools/inputmethods/m17n-lib { };
- mozc = callPackage ../tools/inputmethods/mozc {
- inherit (pythonPackages) gyp;
- };
-
ibus = callPackage ../tools/inputmethods/ibus { };
- ibus-qt = callPackage ../tools/inputmethods/ibus-qt { };
+ ibus-qt = callPackage ../tools/inputmethods/ibus/ibus-qt.nix { };
- ibus-anthy = callPackage ../tools/inputmethods/ibus-anthy { };
+ ibus-engines = {
- ibus-table = callPackage ../tools/inputmethods/ibus-table { };
+ anthy = callPackage ../tools/inputmethods/ibus-engines/ibus-anthy { };
- ibus-table-others = callPackage ../tools/inputmethods/ibus-table-others { };
+ hangul = callPackage ../tools/inputmethods/ibus-engines/ibus-hangul { };
+
+ m17n = callPackage ../tools/inputmethods/ibus-engines/ibus-m17n { };
+
+ mozc = callPackage ../tools/inputmethods/ibus-engines/ibus-mozc {
+ inherit (pythonPackages) gyp;
+ };
+
+ table = callPackage ../tools/inputmethods/ibus-engines/ibus-table { };
+
+ table-others = callPackage ../tools/inputmethods/ibus-engines/ibus-table-others { };
+
+ };
+
+ ibus-with-plugins = callPackage ../tools/inputmethods/ibus/wrapper.nix {
+ plugins = [ ];
+ };
brotli = callPackage ../tools/compression/brotli { };
@@ -1513,7 +1525,23 @@ let
fcitx = callPackage ../tools/inputmethods/fcitx { };
- fcitx-anthy = callPackage ../tools/inputmethods/fcitx/fcitx-anthy.nix { };
+ fcitx-engines = {
+
+ anthy = callPackage ../tools/inputmethods/fcitx-engines/fcitx-anthy { };
+
+ chewing = callPackage ../tools/inputmethods/fcitx-engines/fcitx-chewing { };
+
+ hangul = callPackage ../tools/inputmethods/fcitx-engines/fcitx-hangul { };
+
+ m17n = callPackage ../tools/inputmethods/fcitx-engines/fcitx-m17n { };
+
+ mozc = callPackage ../tools/inputmethods/fcitx-engines/fcitx-mozc {
+ inherit (pythonPackages) gyp;
+ };
+
+ table-other = callPackage ../tools/inputmethods/fcitx-engines/fcitx-table-other { };
+
+ };
fcitx-configtool = callPackage ../tools/inputmethods/fcitx/fcitx-configtool.nix { };