diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix new file mode 100644 index 000000000000..8e9998dde393 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix @@ -0,0 +1,112 @@ +{ stdenv +, fetchFromGitHub +, lzma +, qt5 +, wrapQtAppsHook +, miniupnpc_2 +, swftools +, pythonPackages +}: + +pythonPackages.buildPythonPackage { + pname = "hydrus"; + version = "420"; + format = "other"; + + src = fetchFromGitHub { + owner = "hydrusnetwork"; + repo = "hydrus"; + rev = "067c4862a0ed8dd9264b464c69975b520139809f"; + sha256 = "12x0rv2yxsczdaxvpb5ggf4jwzjd1vd7ml0r61s4342zwvjrhji9"; + }; + + nativeBuildInputs = [ + wrapQtAppsHook + ]; + + propagatedBuildInputs = with pythonPackages; [ + beautifulsoup4 + html5lib + lxml + numpy + opencv4 + pillow + psutil + pyopenssl + pyyaml + requests + send2trash + service-identity + twisted + lz4 + lzma + pysocks + matplotlib + qtpy + pyside2 + ]; + + checkInputs = with pythonPackages; [ nose httmock ]; + + # most tests are failing, presumably because we are not using test.py + checkPhase = '' + nosetests $src/hydrus/test \ + -e TestClientAPI \ + -e TestClientConstants \ + -e TestClientDaemons \ + -e TestClientData \ + -e TestClientDB \ + -e TestClientDBDuplicates \ + -e TestClientDBTags \ + -e TestClientImageHandling \ + -e TestClientImportOptions \ + -e TestClientListBoxes \ + -e TestClientMigration \ + -e TestClientNetworking \ + -e TestClientTags \ + -e TestClientThreading \ + -e TestDialogs \ + -e TestFunctions \ + -e TestHydrusNATPunch \ + -e TestHydrusSerialisable \ + -e TestHydrusServer \ + -e TestHydrusSessions \ + -e TestServer \ + ''; + + extraOutputsToLink = [ "doc" ]; + + postPatch = '' + sed 's;os\.path\.join(\sHC\.BIN_DIR,.*;"${miniupnpc_2}/bin/upnpc";' \ + -i ./hydrus/core/HydrusNATPunch.py + + sed 's;os\.path\.join(\sHC\.BIN_DIR,.*;"${swftools}/bin/swfrender";' \ + -i ./hydrus/core/HydrusFlashHandling.py + ''; + + #doCheck = true; + + installPhase = '' + # Move the hydrus module and related directories + mkdir -p $out/${pythonPackages.python.sitePackages} + mv {hydrus,static} $out/${pythonPackages.python.sitePackages} + mv help $out/doc/ + + # install the hydrus binaries + mkdir -p $out/bin + install -m0755 server.py $out/bin/hydrus-server + install -m0755 client.py $out/bin/hydrus-client + ''; + + dontWrapQtApps = true; + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + meta = with stdenv.lib; { + description = "Danbooru-like image tagging and searching system for the desktop"; + license = licenses.wtfpl; + homepage = "https://hydrusnetwork.github.io/hydrus/"; + maintainers = [ maintainers.evanjs ]; + }; +} |