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
|
{ lib
, fetchFromGitHub
, python3
, bash
, makeWrapper
, kanjidraw
, pcre
, sqlite
, nodejs
}:
python3.pkgs.buildPythonApplication rec {
pname = "jiten";
version = "1.1.0";
src = fetchFromGitHub {
owner = "obfusk";
repo = "jiten";
rev = "v${version}";
sha256 = "13bdx136sirbhxdhvpq5kf0r6q1xvm5zyzp454z51gy0v6rn0qrp";
};
nonFreeData = fetchFromGitHub {
owner = "obfusk";
repo = "jiten-nonfree-data";
rev = "v${version}";
sha256 = "16sz8i0sw7ggy6kijcx4qyl2zr6xj789x4iav0yyllx12dfgp5b1";
};
patches = [
# Potentially can be dropped after the next release
# https://github.com/NixOS/nixpkgs/issues/271600
./cookie-fix.patch
];
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ pcre sqlite ];
propagatedBuildInputs = with python3.pkgs; [ click flask kanjidraw ];
nativeCheckInputs = [ nodejs ];
preBuild = ''
export JITEN_VERSION=${version} # override `git describe`
export JITEN_FINAL=yes # build & package *.sqlite3
'';
postPatch = ''
rmdir nonfree-data
ln -s ${nonFreeData} nonfree-data
substituteInPlace Makefile --replace /bin/bash ${bash}/bin/bash
substituteInPlace jiten/res/jmdict/Makefile \
--replace /bin/bash ${bash}/bin/bash
'';
checkPhase = ''
make test
'';
postInstall = ''
# requires pywebview
rm $out/bin/jiten-gui
'';
meta = with lib; {
description = "Japanese android/cli/web dictionary based on jmdict/kanjidic";
longDescription = ''
Jiten is a Japanese dictionary based on JMDict/Kanjidic
Fine-grained search using regexes (regular expressions)
• simple searches don't require knowledge of regexes
• quick reference available in the web interface and android app
JMDict multilingual japanese dictionary
• kanji, readings (romaji optional), meanings & more
• meanings in english, dutch, german, french and/or spanish
• pitch accent (from Wadoku)
• browse by frequency/jlpt
Kanji dictionary
• readings (romaji optional), meanings (english), jmdict entries, radicals & more
• search using SKIP codes
• search by radical
• handwritten kanji recognition
• browse by frequency/level/jlpt/SKIP
Example sentences (from Tatoeba)
• with english, dutch, german, french and/or spanish translation
• some with audio
Stroke order
• input a word or sentence and see how it's written
Web interface
• available online at https://jiten.obfusk.dev
• light/dark mode
• search history (stored locally)
• tooltips to quickly see meanings and readings for kanji and words
• use long press for tooltips on mobile
• converts romaji to hiragana and between hiragana and katakana
• can be run on your own computer
Command-line interface
'';
homepage = "https://github.com/obfusk/jiten";
license = with licenses; [
agpl3Plus # code
cc-by-sa-30 # jmdict/kanjidic
unfreeRedistributable # pitch data & audio are non-commercial
];
maintainers = [ maintainers.obfusk ];
};
}
|