anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / tools / misc / gaphor / default.nix
blobab017fb6065af9c82bc2cda772e2540c44f6fb22
1 { lib
2 , buildPythonApplication
3 , fetchPypi
4 , copyDesktopItems
5 , gobject-introspection
6 , poetry-core
7 , wrapGAppsHook4
8 , gtksourceview5
9 , libadwaita
10 , pango
11 , gaphas
12 , generic
13 , jedi
14 , pycairo
15 , pillow
16 , dulwich
17 , pydot
18 , defusedxml
19 , better-exceptions
20 , babel
21 , pygobject3
22 , tinycss2
23 , gtk4
24 , librsvg
25 , makeDesktopItem
26 , python
29 buildPythonApplication rec {
30   pname = "gaphor";
31   version = "2.27.0";
32   pyproject = true;
34   src = fetchPypi {
35     inherit pname version;
36     hash = "sha256-MsbEeOop6Osq2Hn6CkorsXt8/bTY//QHW/uCl0FEUN4=";
37   };
39   pythonRelaxDeps = [ "defusedxml" ];
41   nativeBuildInputs = [
42     copyDesktopItems
43     gobject-introspection
44     wrapGAppsHook4
45   ];
47   buildInputs = [
48     gtksourceview5
49     pango
50     libadwaita
51   ];
53   build-system = [ poetry-core ];
55   dependencies = [
56     pycairo
57     pygobject3
58     gaphas
59     generic
60     tinycss2
61     babel
62     jedi
63     better-exceptions
64     pydot
65     pillow
66     defusedxml
67     dulwich
68   ];
70   desktopItems = [
71     (makeDesktopItem {
72       name = pname;
73       exec = "gaphor";
74       icon = "gaphor";
75       comment = meta.description;
76       desktopName = "Gaphor";
77     })
78   ];
80   # Disable automatic wrapGAppsHook4 to prevent double wrapping
81   dontWrapGApps = true;
83   postInstall = ''
84     install -Dm644 $out/${python.sitePackages}/gaphor/ui/icons/hicolor/scalable/apps/org.gaphor.Gaphor.svg $out/share/pixmaps/gaphor.svg
85   '';
87   preFixup = ''
88     makeWrapperArgs+=(
89       "''${gappsWrapperArgs[@]}" \
90       --prefix XDG_DATA_DIRS : "${gtk4}/share/gsettings-schemas/${gtk4.name}/" \
91       --set GDK_PIXBUF_MODULE_FILE "${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
92     )
93   '';
95   meta = with lib; {
96     description = "Simple modeling tool written in Python";
97     maintainers = [ ];
98     homepage = "https://github.com/gaphor/gaphor";
99     license = licenses.asl20;
100     platforms = lib.platforms.linux;
101   };