at 23.11-beta 108 lines 2.7 kB view raw
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}