diff --git a/pkgs/applications/misc/jiten/default.nix b/pkgs/applications/misc/jiten/default.nix new file mode 100644 index 000000000000..5447a2b30506 --- /dev/null +++ b/pkgs/applications/misc/jiten/default.nix @@ -0,0 +1,91 @@ +{ lib +, fetchFromGitHub +, python3Packages +, makeWrapper +, pcre +, sqlite +, nodejs +}: + +python3Packages.buildPythonApplication rec { + pname = "jiten"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "obfusk"; + repo = "jiten"; + rev = "v${version}"; + sha256 = "1lg1n7f4383jdlkbma0q65yl6l159wgh886admcq7l7ap26zpqd2"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ pcre sqlite ]; + propagatedBuildInputs = with python3Packages; [ click flask ]; + checkInputs = [ nodejs ]; + + preBuild = '' + export JITEN_VERSION=${version} # override `git describe` + export JITEN_FINAL=yes # build & package *.sqlite3 + ''; + + postPatch = '' + substituteInPlace Makefile --replace /bin/bash "$(command -v bash)" + substituteInPlace jiten/res/jmdict/Makefile --replace /bin/bash "$(command -v 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 + • browse by frequency/level/jlpt + + 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 from wadoku is non-commercial :( + ]; + maintainers = [ maintainers.obfusk ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b786733b8eb0..ebf5a8dd8a5b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2665,6 +2665,8 @@ in jellyfin-mpv-shim = python3Packages.callPackage ../applications/video/jellyfin-mpv-shim { }; + jiten = callPackage ../applications/misc/jiten { }; + jotta-cli = callPackage ../applications/misc/jotta-cli { }; joycond = callPackage ../os-specific/linux/joycond { };