1{ stdenv
2, lib
3, fetchFromGitHub
4, jdk11
5, makeDesktopItem
6, makeWrapper
7, copyDesktopItems
8, nix-update-script
9}:
10
11stdenv.mkDerivation rec {
12 pname = "structorizer";
13 version = "3.32-14";
14
15 desktopItems = [
16 (makeDesktopItem {
17 type = "Application";
18 name = "Structorizer";
19 desktopName = "Structorizer";
20 genericName = "Diagram creator";
21 comment = meta.description;
22 icon = pname;
23 exec = pname;
24 terminal = false;
25 mimeTypes = [ "application/nsd" ];
26 categories = [
27 "Development"
28 "Graphics"
29 "VectorGraphics"
30 "RasterGraphics"
31 "ComputerScience"
32 ];
33 keywords = [ "nsd" "diagrams" ];
34 })
35 ];
36
37 src = fetchFromGitHub {
38 owner = "fesch";
39 repo = "Structorizer.Desktop";
40 rev = version;
41 hash = "sha256-pnzvfXH4KC067aqqH9h1+T3K+6IzIYw8IJCMdmGrN6c=";
42 };
43
44 patches = [ ./makeStructorizer.patch ./makeBigJar.patch ];
45
46 strictDeps = true;
47
48 nativeBuildInputs = [ jdk11 makeWrapper copyDesktopItems ];
49
50 buildInputs = [ jdk11 ];
51
52 postPatch = ''
53 chmod +x makeStructorizer
54 chmod +x makeBigJar
55
56 patchShebangs --build makeStructorizer
57 patchShebangs --build makeBigJar
58 '';
59
60 buildPhase = ''
61 runHook preBuild
62
63 ./makeStructorizer
64 ./makeBigJar
65
66 runHook postBuild
67 '';
68
69 installPhase = ''
70 runHook preInstall
71
72 install -d $out/bin $out/share/mime/packages
73
74 install -D ${pname}.jar -t $out/share/java/
75 makeWrapper ${jdk11}/bin/java $out/bin/${pname} \
76 --add-flags "-jar $out/share/java/${pname}.jar"
77
78 cat << EOF > $out/share/mime/packages/structorizer.xml
79 <?xml version="1.0" encoding="UTF-8"?>
80 <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
81 <mime-type type="application/nsd">
82 <comment xml:lang="en">Nassi-Shneiderman diagram</comment>
83 <comment xml:lang="de">Nassi-Shneiderman-Diagramm</comment>
84 <glob pattern="*.nsd"/>
85 </mime-type>
86 </mime-info>
87 EOF
88
89 cd src/lu/fisch/${pname}/gui
90 install -vD icons/000_${pname}.png $out/share/icons/hicolor/16x16/apps/${pname}.png
91 for icon_width in 24 32 48 64 128 256; do
92 install -vD icons_"$icon_width"/000_${pname}.png $out/share/icons/hicolor/"$icon_width"x"$icon_width"/apps/${pname}.png
93 done
94
95 runHook postInstall
96 '';
97
98 passthru.updateScript = nix-update-script { };
99
100 meta = with lib; {
101 description = "Create Nassi-Shneiderman diagrams (NSD)";
102 homepage = "https://structorizer.fisch.lu";
103 license = licenses.gpl3Plus;
104 platforms = platforms.all;
105 maintainers = with maintainers; [ annaaurora ];
106 mainProgram = "structorizer";
107 };
108}