1{ lib 2, buildPythonPackage 3, fetchFromGitHub 4, pytestCheckHook 5, argostranslate 6, flask 7, flask-swagger 8, flask-swagger-ui 9, flask-limiter 10, flask-babel 11, flask-session 12, waitress 13, expiringdict 14, ltpycld2 15, morfessor 16, appdirs 17, apscheduler 18, translatehtml 19, argos-translate-files 20, requests 21, redis 22, prometheus-client 23, polib 24, python 25}: 26 27buildPythonPackage rec { 28 pname = "libretranslate"; 29 version = "1.3.11"; 30 31 format = "setuptools"; 32 33 src = fetchFromGitHub { 34 owner = "LibreTranslate"; 35 repo = "LibreTranslate"; 36 rev = "refs/tags/v${version}"; 37 hash = "sha256-S2J7kcoZFHOjVm2mb3TblWf9/FzkxZEB3h27BCaPYgY="; 38 }; 39 40 propagatedBuildInputs = [ 41 argostranslate 42 flask 43 flask-swagger 44 flask-swagger-ui 45 flask-limiter 46 flask-babel 47 flask-session 48 waitress 49 expiringdict 50 ltpycld2 51 morfessor 52 appdirs 53 apscheduler 54 translatehtml 55 argos-translate-files 56 requests 57 redis 58 prometheus-client 59 polib 60 ]; 61 62 postPatch = '' 63 substituteInPlace requirements.txt \ 64 --replace "==" ">=" 65 66 substituteInPlace setup.py \ 67 --replace "'pytest-runner'" "" 68 ''; 69 70 postInstall = '' 71 # expose static files to be able to serve them via web-server 72 mkdir -p $out/share/libretranslate 73 ln -s $out/${python.sitePackages}/libretranslate/static $out/share/libretranslate/static 74 ''; 75 76 doCheck = false; # needs network access 77 78 nativeCheckInputs = [ 79 pytestCheckHook 80 ]; 81 82 # required for import check to work (argostranslate) 83 env.HOME = "/tmp"; 84 85 pythonImportsCheck = [ "libretranslate" ]; 86 87 meta = with lib; { 88 description = "Free and Open Source Machine Translation API. Self-hosted, no limits, no ties to proprietary services"; 89 homepage = "https://libretranslate.com"; 90 changelog = "https://github.com/LibreTranslate/LibreTranslate/releases/tag/v${version}"; 91 license = licenses.agpl3Only; 92 maintainers = with maintainers; [ misuzu ]; 93 }; 94}