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 { };