From 95f2dc650d8c6c9f65efd85d915246ab94c4de6e Mon Sep 17 00:00:00 2001 From: Flakebi Date: Thu, 13 May 2021 16:42:22 +0200 Subject: paperless-ng: init at 1.4.5 --- pkgs/applications/office/paperless-ng/default.nix | 197 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 199 insertions(+) create mode 100644 pkgs/applications/office/paperless-ng/default.nix (limited to 'pkgs') diff --git a/pkgs/applications/office/paperless-ng/default.nix b/pkgs/applications/office/paperless-ng/default.nix new file mode 100644 index 0000000000000..66a548545b3e5 --- /dev/null +++ b/pkgs/applications/office/paperless-ng/default.nix @@ -0,0 +1,197 @@ +{ lib +, fetchurl +, nixosTests +, python3 +, ghostscript +, imagemagick +, jbig2enc +, ocrmypdf +, optipng +, pngquant +, qpdf +, tesseract4 +, unpaper +, liberation_ttf +}: + +let + py = python3.override { + packageOverrides = self: super: { + django = super.django_3; + django-picklefield = super.django-picklefield.overrideAttrs (oldAttrs: { + # Checks do not pass with django 3 + doInstallCheck = false; + }); + # Avoid warning in django-q versions > 1.3.4 + # https://github.com/jonaswinkler/paperless-ng/issues/857 + # https://github.com/Koed00/django-q/issues/526 + django-q = super.django-q.overridePythonAttrs (oldAttrs: rec { + version = "1.3.4"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "Uj1U3PG2YVLBtlj5FPAO07UYo0MqnezUiYc4yo274Q8="; + }; + }); + }; + }; + + path = lib.makeBinPath [ ghostscript imagemagick jbig2enc optipng pngquant qpdf tesseract4 unpaper ]; +in +py.pkgs.pythonPackages.buildPythonApplication rec { + pname = "paperless-ng"; + version = "1.4.5"; + + src = fetchurl { + url = "https://github.com/jonaswinkler/paperless-ng/releases/download/ng-${version}/${pname}-${version}.tar.xz"; + sha256 = "2PJb8j3oimlfiJ3gqjK6uTemzFdtAP2Mlm5RH09bx/E="; + }; + + format = "other"; + + # Make bind address configurable + # Fix tests with Pillow 8.3.1: https://github.com/jonaswinkler/paperless-ng/pull/1183 + prePatch = '' + substituteInPlace gunicorn.conf.py --replace "bind = '0.0.0.0:8000'" "" + substituteInPlace src/paperless_tesseract/parsers.py --replace "return x" "return round(x)" + ''; + + propagatedBuildInputs = with py.pkgs.pythonPackages; [ + aioredis + arrow + asgiref + async-timeout + attrs + autobahn + automat + blessed + certifi + cffi + channels-redis + channels + chardet + click + coloredlogs + concurrent-log-handler + constantly + cryptography + daphne + dateparser + django-cors-headers + django_extensions + django-filter + django-picklefield + django-q + django + djangorestframework + filelock + fuzzywuzzy + gunicorn + h11 + hiredis + httptools + humanfriendly + hyperlink + idna + imap-tools + img2pdf + incremental + inotify-simple + inotifyrecursive + joblib + langdetect + lxml + msgpack + numpy + ocrmypdf + pathvalidate + pdfminer + pikepdf + pillow + pluggy + portalocker + psycopg2 + pyasn1-modules + pyasn1 + pycparser + pyopenssl + python-dateutil + python-dotenv + python-gnupg + python-Levenshtein + python_magic + pytz + pyyaml + redis + regex + reportlab + requests + scikit-learn + scipy + service-identity + six + sortedcontainers + sqlparse + threadpoolctl + tika + tqdm + twisted.extras.tls + txaio + tzlocal + urllib3 + uvicorn + uvloop + watchdog + watchgod + wcwidth + websockets + whitenoise + whoosh + zope_interface + ]; + + doCheck = true; + checkInputs = with py.pkgs.pythonPackages; [ + pytest + pytest-cov + pytest-django + pytest-env + pytest-sugar + pytest-xdist + factory_boy + ]; + + # The tests require: + # - PATH with runtime binaries + # - A temporary HOME directory for gnupg + # - XDG_DATA_DIRS with test-specific fonts + checkPhase = '' + pushd src + PATH="${path}:$PATH" HOME=$(mktemp -d) XDG_DATA_DIRS="${liberation_ttf}/share:$XDG_DATA_DIRS" pytest + popd + ''; + + installPhase = '' + mkdir -p $out/lib + cp -r . $out/lib/paperless-ng + chmod +x $out/lib/paperless-ng/src/manage.py + makeWrapper $out/lib/paperless-ng/src/manage.py $out/bin/paperless-ng \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + --prefix PATH : "${path}" + ''; + + passthru = { + # PYTHONPATH of all dependencies used by the package + pythonPath = python3.pkgs.makePythonPath propagatedBuildInputs; + inherit path; + + tests = { inherit (nixosTests) paperless-ng; }; + }; + + meta = with lib; { + description = "A supercharged version of paperless: scan, index, and archive all of your physical documents"; + homepage = "https://paperless-ng.readthedocs.io/en/latest/"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ earvstedt Flakebi ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9ece72bc0aa97..af68bc489dcb9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7891,6 +7891,8 @@ with pkgs; paperless = callPackage ../applications/office/paperless { }; + paperless-ng = callPackage ../applications/office/paperless-ng { }; + paperwork = callPackage ../applications/office/paperwork/paperwork-gtk.nix { }; papertrail = callPackage ../tools/text/papertrail { }; -- cgit 1.4.1