biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / applications / graphics / hydrus / default.nix
blobf4740c7d9d236da70cf78eb91071e1c73bc83aff
1 { lib
2 , fetchFromGitHub
3 , wrapQtAppsHook
4 , miniupnpc
5 , ffmpeg
6 , enableSwftools ? false
7 , swftools
8 , python3Packages
9 , pythonOlder
10 , qtbase
11 , qtcharts
12 , makeDesktopItem
13 , copyDesktopItems
16 python3Packages.buildPythonPackage rec {
17   pname = "hydrus";
18   version = "591";
19   format = "other";
21   src = fetchFromGitHub {
22     owner = "hydrusnetwork";
23     repo = "hydrus";
24     rev = "refs/tags/v${version}";
25     hash = "sha256-JhCnSNmCOEJdM5aEPpYWLpKy/EQ9BoN1A/aUAaILWtQ=";
26   };
28   nativeBuildInputs = [
29     wrapQtAppsHook
30     python3Packages.mkdocs-material
31     copyDesktopItems
32   ];
34   buildInputs = [
35     qtbase
36     qtcharts
37   ];
39   desktopItems = [
40     (makeDesktopItem {
41       name = "hydrus-client";
42       exec = "hydrus-client";
43       desktopName = "Hydrus Client";
44       icon = "hydrus-client";
45       comment = meta.description;
46       terminal = false;
47       type = "Application";
48       categories = [ "FileTools" "Utility" ];
49     })
50   ];
53   propagatedBuildInputs = with python3Packages; [
54     beautifulsoup4
55     cbor2
56     chardet
57     cloudscraper
58     dateparser
59     html5lib
60     lxml
61     lz4
62     numpy
63     opencv4
64     olefile
65     pillow
66     pillow-heif
67     psutil
68     psd-tools
69     pympler
70     pyopenssl
71     pyqt6
72     pyqt6-charts
73     pysocks
74     python-dateutil
75     python3Packages.mpv
76     pyyaml
77     qtpy
78     requests
79     show-in-file-manager
80     send2trash
81     service-identity
82     twisted
83   ];
85   nativeCheckInputs = with python3Packages; [
86     mock
87     httmock
88   ];
90   outputs = [ "out" "doc" ];
92   installPhase = ''
93     runHook preInstall
95     # Move the hydrus module and related directories
96     mkdir -p $out/${python3Packages.python.sitePackages}
97     mv {hydrus,static,db} $out/${python3Packages.python.sitePackages}
98     # Fix random files being marked with execute permissions
99     chmod -x $out/${python3Packages.python.sitePackages}/static/*.{png,svg,ico}
100     # Build docs
101     mkdocs build -d help
102     mkdir -p $doc/share/doc
103     mv help $doc/share/doc/hydrus
105     # install the hydrus binaries
106     mkdir -p $out/bin
107     install -m0755 hydrus_server.py $out/bin/hydrus-server
108     install -m0755 hydrus_client.py $out/bin/hydrus-client
109     install -m0755 hydrus_test.py $out/bin/hydrus-test
111     # desktop item
112     mkdir -p "$out/share/icons/hicolor/scalable/apps"
113     ln -s "$doc/share/doc/hydrus/assets/hydrus-white.svg" "$out/share/icons/hicolor/scalable/apps/hydrus-client.svg"
114   '' + lib.optionalString enableSwftools ''
115     mkdir -p $out/${python3Packages.python.sitePackages}/bin
116     # swfrender seems to have to be called sfwrender_linux
117     # not sure if it can be loaded through PATH, but this is simpler
118     # $out/python3Packages.python.sitePackages/bin is correct NOT .../hydrus/bin
119     ln -s ${swftools}/bin/swfrender $out/${python3Packages.python.sitePackages}/bin/swfrender_linux
120   '' + ''
121     runHook postInstall
122   '';
124   checkPhase = ''
125     runHook preCheck
127     export QT_QPA_PLATFORM=offscreen
128     export HOME=$(mktemp -d)
129     $out/bin/hydrus-test
131     runHook postCheck
132   '';
134   dontWrapQtApps = true;
135   preFixup = ''
136     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
137     makeWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ ffmpeg miniupnpc ]})
138   '';
140   meta = with lib; {
141     description = "Danbooru-like image tagging and searching system for the desktop";
142     license = licenses.wtfpl;
143     homepage = "https://hydrusnetwork.github.io/hydrus/";
144     maintainers = with maintainers; [ dandellion evanjs ];
145   };