1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 python,
6 xvfb-run,
7 wrapGAppsHook3,
8 gobject-introspection,
9 pygobject3,
10 graphviz,
11 gtk3,
12 numpy,
13 packaging,
14 setuptools,
15}:
16
17buildPythonPackage rec {
18 pname = "xdot";
19 version = "1.4";
20 pyproject = true;
21
22 src = fetchFromGitHub {
23 owner = "jrfonseca";
24 repo = "xdot.py";
25 rev = version;
26 hash = "sha256-fkO1bINRkCCzVRrQg9+vIODbN+bpXq2OHBKkzzZUZNA=";
27 };
28
29 build-system = [ setuptools ];
30
31 nativeBuildInputs = [
32 gobject-introspection
33 wrapGAppsHook3
34 ];
35
36 buildInputs = [
37 graphviz
38 gtk3
39 ];
40
41 dependencies = [
42 pygobject3
43 numpy
44 packaging
45 ];
46 nativeCheckInputs = [ xvfb-run ];
47
48 dontWrapGApps = true;
49 # Arguments to be passed to `makeWrapper`, only used by buildPython*
50 preFixup = ''
51 makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
52 makeWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ graphviz ]})
53 '';
54
55 checkPhase = ''
56 runHook preCheck
57
58 xvfb-run -s '-screen 0 800x600x24' ${python.interpreter} test.py
59
60 runHook postCheck
61 '';
62
63 meta = with lib; {
64 description = "Interactive viewer for graphs written in Graphviz's dot";
65 mainProgram = "xdot";
66 homepage = "https://github.com/jrfonseca/xdot.py";
67 license = licenses.lgpl3Plus;
68 };
69}