Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
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}