summary refs log tree commit diff
path: root/pkgs/tools/inputmethods/uim/default.nix
blob: 58c3a8a58e6094d3a80ea78e4407b97c4ecadbae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
{ stdenv, fetchurl, intltool, pkgconfig, cmake
, ncurses, m17n_lib, m17n_db, expat
, withAnthy ? true, anthy ? null
, withGtk ? true
, withGtk2 ? withGtk, gtk2 ? null
, withGtk3 ? withGtk, gtk3 ? null
, withQt ? true
, withQt4 ? withQt, qt4 ? null
, withKde ? withQt
, withKde4 ? withKde && withQt4, kdelibs4 ? null, automoc4 ? null
, withKNotify4 ? false
, withLibnotify ? !withKNotify4, libnotify ? null
, withSqlite ? true, sqlite ? null
, withNetworking ? true, curl ? null, openssl ? null
, withFFI ? true, libffi ? null

# Things that are clearly an overkill to be enabled by default
, withMisc ? false, libeb ? null
}:

with stdenv.lib;

assert withAnthy -> anthy != null;
assert withGtk2 -> gtk2 != null;
assert withGtk3 -> gtk3 != null;
assert withQt4 -> qt4 != null;
assert withKde4 -> withQt4 && kdelibs4 != null && automoc4 != null;
assert withKNotify4 -> withKde4 && !withLibnotify;
assert withLibnotify -> !withKNotify4 && libnotify != null;
assert withSqlite -> sqlite != null;
assert withNetworking -> curl != null && openssl != null;
assert withFFI -> libffi != null;
assert withMisc -> libeb != null;

stdenv.mkDerivation rec {
  version = "1.8.6";
  name = "uim-${version}";

  buildInputs = [
    intltool
    pkgconfig
    ncurses
    cmake
    m17n_lib
    m17n_db
    expat
  ]
  ++ optional withAnthy anthy
  ++ optional withGtk2 gtk2
  ++ optional withGtk3 gtk3
  ++ optional withQt4 qt4
  ++ optionals withKde4 [
    kdelibs4 automoc4
  ]
  ++ optional withLibnotify libnotify
  ++ optional withSqlite sqlite
  ++ optionals withNetworking [
    curl openssl
  ]
  ++ optional withFFI libffi
  ++ optional withMisc libeb;

  patches = [ ./data-hook.patch ];

  configureFlags = [
    "--enable-pref"
    "--with-skk"
    "--with-x"
    "--with-xft"
    "--with-expat=${expat.dev}"
  ]
  ++ optional withAnthy "--with-anthy-utf8"
  ++ optional withGtk2 "--with-gtk2"
  ++ optional withGtk3 "--with-gtk3"
  ++ optionals withQt4 [
    "--with-qt4"
    "--with-qt4-immodule"
  ]
  ++ optional withKde4 "--enable-kde4-applet"
  ++ optional withKNotify4 "--enable-notify=knotify4"
  ++ optional withLibnotify "--enable-notify=libnotify"
  ++ optional withSqlite "--with-sqlite3"
  ++ optionals withNetworking [
    "--with-curl"
    "--with-openssl-dir=${openssl.dev}"
  ]
  ++ optional withFFI "--with-ffi"
  ++ optional withMisc "--with-eb";

  # TODO: things in `./configure --help`, but not in nixpkgs
  #--with-canna            Use Canna [default=no]
  #--with-wnn              Build with libwnn [default=no]
  #--with-mana             Build a plugin for Mana [default=yes]
  #--with-prime            Build a plugin for PRIME [default=yes]
  #--with-sj3              Use SJ3 [default=no]
  #--with-osx-dcs          Build with OS X Dictionary Services [default=no]

  dontUseCmakeConfigure = true;

  src = fetchurl {
    url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/uim/uim-${version}.tar.bz2";
    sha1 = "43b9dbdead6797880e6cfc9c032ecb2d37d42777";
  };

  meta = with stdenv.lib; {
    homepage    = "https://github.com/uim/uim";
    description = "A multilingual input method framework";
    license     = stdenv.lib.licenses.bsd3;
    platforms   = stdenv.lib.platforms.linux;
    maintainers = with maintainers; [ ericsagnes ];
  };
}