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}:
14
15buildPythonPackage rec {
16 pname = "xdot";
17 version = "1.3";
18 format = "setuptools";
19
20 src = fetchFromGitHub {
21 owner = "jrfonseca";
22 repo = "xdot.py";
23 rev = version;
24 hash = "sha256-0UfvN7z7ThlFu825h03Z5Wur9zbiUpvD5cb5gcIhQQI=";
25 };
26
27 nativeBuildInputs = [
28 gobject-introspection
29 wrapGAppsHook3
30 ];
31 propagatedBuildInputs = [
32 pygobject3
33 graphviz
34 gtk3
35 numpy
36 ];
37 nativeCheckInputs = [ xvfb-run ];
38
39 dontWrapGApps = true;
40 # Arguments to be passed to `makeWrapper`, only used by buildPython*
41 preFixup = ''
42 makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
43 makeWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ graphviz ]})
44 '';
45
46 checkPhase = ''
47 runHook preCheck
48
49 xvfb-run -s '-screen 0 800x600x24' ${python.interpreter} test.py
50
51 runHook postCheck
52 '';
53
54 doCheck = true;
55
56 meta = with lib; {
57 description = "Interactive viewer for graphs written in Graphviz's dot";
58 mainProgram = "xdot";
59 homepage = "https://github.com/jrfonseca/xdot.py";
60 license = licenses.lgpl3Plus;
61 };
62}