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