aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/hydrus/default.nix112
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 ];
+ };
+}