anchor.diff:        • readings (romaji optional), meanings (english), jmdict entries, radicals & more
         • search using SKIP codes
         • search by radical
  -      • browse by frequency/level/jlpt
  +      • handwritten kanji recognition
  +      • browse by frequency/level/jlpt/SKIP
   
         Example sentences (from Tatoeba)
         • with english, dutch, german, french and/or spanish translation
  
positive.code: { 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 = ''
  
negative.code:   '';
  
    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
  