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