lol
1{ stdenv, lib, python3Packages, gettext, qt5, fetchFromGitHub}:
2
3python3Packages.buildPythonApplication rec {
4 pname = "dupeguru";
5 version = "4.1.1";
6
7 format = "other";
8
9 src = fetchFromGitHub {
10 owner = "arsenetar";
11 repo = "dupeguru";
12 rev = version;
13 sha256 = "sha256-0lJocrNQHTrpslbPE6xjZDWhzza8cAt2js35LvicZKg=";
14 fetchSubmodules = true;
15 };
16
17 nativeBuildInputs = [
18 gettext
19 python3Packages.pyqt5
20 qt5.wrapQtAppsHook
21 ];
22
23 pythonPath = with python3Packages; [
24 pyqt5
25 pyqt5_sip
26 send2trash
27 sphinx
28 polib
29 hsaudiotag3k
30 ];
31
32 makeFlags = [
33 "PREFIX=${placeholder "out"}"
34 "NO_VENV=1"
35 ];
36
37 nativeCheckInputs = with python3Packages; [
38 pytestCheckHook
39 ];
40 preCheck = ''
41 export HOME="$(mktemp -d)"
42 '';
43
44 # Avoid double wrapping Python programs.
45 dontWrapQtApps = true;
46
47 # TODO: A bug in python wrapper
48 # see https://github.com/NixOS/nixpkgs/pull/75054#discussion_r357656916
49 preFixup = ''
50 makeWrapperArgs="''${qtWrapperArgs[@]}"
51 '';
52
53 # Executable in $out/bin is a symlink to $out/share/dupeguru/run.py
54 # so wrapPythonPrograms hook does not handle it automatically.
55 postFixup = ''
56 wrapPythonProgramsIn "$out/share/dupeguru" "$out $pythonPath"
57 '';
58
59 meta = with lib; {
60 broken = stdenv.isDarwin;
61 description = "GUI tool to find duplicate files in a system";
62 homepage = "https://github.com/arsenetar/dupeguru";
63 license = licenses.bsd3;
64 platforms = platforms.unix;
65 maintainers = [ maintainers.novoxd ];
66 mainProgram = "dupeguru";
67 };
68}