summary refs log tree commit diff
path: root/pkgs/tools/inputmethods
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2018-09-16 18:36:21 +0200
committerMaximilian Bosch <maximilian@mbosch.me>2018-09-19 21:27:10 +0200
commitdee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b (patch)
tree4440d93d605120d30e21c4c9dcf05c733342d34d /pkgs/tools/inputmethods
parentd3d465e32f53dd88c2b4229c207ff7d005098f1d (diff)
downloadnixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar.gz
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar.bz2
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar.lz
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar.xz
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.tar.zst
nixlib-dee2dab7c6a84c7615e81d20aec5e12ed3b0ae1b.zip
ibus-engines.typing-booster: init at 2.1.1
This package providesa completion input method for faster typing.
See https://mike-fabian.github.io/ibus-typing-booster

Detailed instructions how to activate this IBus engine on your desktop
can be found in the upstream docs: https://mike-fabian.github.io/ibus-typing-booster/documentation.html

A simple VM with the Gnome3 desktop and activated `ibus' looks like
this:

```nix
{
  emojipicker = { pkgs, ... }: {
    services.xserver = {
      enable = true;
      desktopManager.gnome3.enable = true;
      desktopManager.xterm.enable = false;
    };
    users.extraUsers.vm = {
      password = "vm";
      isNormalUser = true;
    };
    i18n.inputMethod.ibus.engines = [
      pkgs.ibus-engines.typing-booster
    ];
    i18n.inputMethod.enabled = "ibus";
    virtualisation.memorySize = 2048;
  };
}
```

Fixes #38721
Diffstat (limited to 'pkgs/tools/inputmethods')
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix41
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/hunspell-dirs.patch31
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/wrapper.nix30
3 files changed, 102 insertions, 0 deletions
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
new file mode 100644
index 000000000000..c5aaa032b40e
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, python3, ibus, pkgconfig, gtk3, m17n_lib
+, wrapGAppsHook, gobjectIntrospection
+}:
+
+let
+
+  python = python3.withPackages (ps: with ps; [
+    pygobject3
+    dbus-python
+  ]);
+
+in
+
+stdenv.mkDerivation rec {
+  name = "ibus-typing-booster-${version}";
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "mike-fabian";
+    repo = "ibus-typing-booster";
+    rev = version;
+    sha256 = "01kpxplk9nh56f32fkq3nnsqykbzpi7pcxbfp38dq0prgrhw9a6b";
+  };
+
+  patches = [ ./hunspell-dirs.patch ];
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook gobjectIntrospection ];
+  buildInputs = [ python ibus gtk3 m17n_lib ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${m17n_lib}/lib")
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://mike-fabian.github.io/ibus-typing-booster/;
+    license = licenses.gpl3Plus;
+    description = "A typing booster engine for the IBus platform";
+    maintainers = with maintainers; [ ma27 ];
+    isIbusEngine = true;
+  };
+}
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/hunspell-dirs.patch b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/hunspell-dirs.patch
new file mode 100644
index 000000000000..7b624b379a26
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/hunspell-dirs.patch
@@ -0,0 +1,31 @@
+diff --git a/engine/itb_util.py b/engine/itb_util.py
+index ded236a..633525a 100755
+--- a/engine/itb_util.py
++++ b/engine/itb_util.py
+@@ -1876,14 +1876,18 @@ def find_hunspell_dictionary(language):
+             If no dictionary can be found for the requested language,
+             the return value is ('', '').
+     '''
+-    dirnames = [
+-        '/usr/share/hunspell',
+-        '/usr/share/myspell',
+-        '/usr/share/myspell/dicts',
+-        '/usr/local/share/hunspell', # On FreeBSD the dictionaries are here
+-        '/usr/local/share/myspell',
+-        '/usr/local/share/myspell/dicts',
+-    ]
++
++    if "NIX_HUNSPELL_DIRS" in os.environ:
++        dirnames = os.environ["NIX_HUNSPELL_DIRS"].split(":")
++    else:       # fallback to the original behavior
++        dirnames = [
++            '/usr/share/hunspell',
++            '/usr/share/myspell',
++            '/usr/share/myspell/dicts',
++            '/usr/local/share/hunspell', # On FreeBSD the dictionaries are here
++            '/usr/local/share/myspell',
++            '/usr/local/share/myspell/dicts',
++        ]
+     dic_path = ''
+     aff_path = ''
+     for language in expand_languages([language]):
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/wrapper.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/wrapper.nix
new file mode 100644
index 000000000000..e6505f3cc468
--- /dev/null
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/wrapper.nix
@@ -0,0 +1,30 @@
+{ typing-booster, symlinkJoin, hunspellDicts, lib, makeWrapper
+, langs ? [ "de-de" "en-us" "es-es" "it-it" "sv-se" "sv-fi" ]
+}:
+
+let
+
+  hunspellDirs = with lib; makeSearchPath ":" (flatten (flip map langs (lang: [
+    "${hunspellDicts.${lang}}/share/hunspell"
+    "${hunspellDicts.${lang}}/share/myspell"
+    "${hunspellDicts.${lang}}/share/myspell/dicts"
+  ])));
+
+in
+
+symlinkJoin {
+  name = "${typing-booster.name}-with-hunspell";
+  paths = [ typing-booster ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    for i in bin/emoji-picker libexec/ibus-{setup,engine}-typing-booster; do
+      wrapProgram "$out/$i" \
+        --prefix NIX_HUNSPELL_DIRS : ${hunspellDirs}
+    done
+
+    sed -i -e "s,${typing-booster},$out," $out/share/ibus/component/typing-booster.xml
+  '';
+
+  inherit (typing-booster) meta;
+}