Merge pull request #297381 from emilytrau/logisim-darwin

logisim,logisim-evolution,mars-mips: add darwin bundle

authored by Weijia Wang and committed by GitHub fed21ab5 c3d5b0c0

+107 -57
+36 -20
pkgs/applications/science/logic/logisim-evolution/default.nix
··· 1 - { lib, stdenv, fetchurl, jre, makeWrapper, copyDesktopItems, makeDesktopItem, unzip }: 1 + { lib 2 + , stdenv 3 + , fetchurl 4 + , jre 5 + , makeBinaryWrapper 6 + , copyDesktopItems 7 + , makeDesktopItem 8 + , desktopToDarwinBundle 9 + , unzip 10 + }: 2 11 3 - stdenv.mkDerivation rec { 12 + let 13 + icon = fetchurl { 14 + url = "https://github.com/logisim-evolution/logisim-evolution/raw/9e0afa3cd6a8bfa75dab61830822cde83c70bb4b/artwork/logisim-evolution-icon.svg"; 15 + hash = "sha256-DNRimhNFt6jLdjqv7o2cNz38K6XnevxD0rGymym3xBs="; 16 + }; 17 + in 18 + stdenv.mkDerivation (finalAttrs: { 4 19 pname = "logisim-evolution"; 5 20 version = "3.8.0"; 6 21 7 22 src = fetchurl { 8 - url = "https://github.com/logisim-evolution/logisim-evolution/releases/download/v${version}/logisim-evolution-${version}-all.jar"; 9 - sha256 = "sha256-TFm+fa3CMp0OMhnKBc6cLIWGQbIG/OpOOCG7ea7wbCw="; 23 + url = "https://github.com/logisim-evolution/logisim-evolution/releases/download/v${finalAttrs.version}/logisim-evolution-${finalAttrs.version}-all.jar"; 24 + hash = "sha256-TFm+fa3CMp0OMhnKBc6cLIWGQbIG/OpOOCG7ea7wbCw="; 10 25 }; 11 - 12 26 dontUnpack = true; 13 27 14 - nativeBuildInputs = [ makeWrapper copyDesktopItems unzip ]; 28 + nativeBuildInputs = [ 29 + makeBinaryWrapper 30 + copyDesktopItems 31 + unzip 32 + ] ++ lib.optionals stdenv.isDarwin [ 33 + desktopToDarwinBundle 34 + ]; 15 35 16 36 desktopItems = [ 17 37 (makeDesktopItem { 18 - name = pname; 38 + name = "logisim-evolution"; 19 39 desktopName = "Logisim-evolution"; 20 40 exec = "logisim-evolution"; 21 41 icon = "logisim-evolution"; 22 - comment = meta.description; 42 + comment = finalAttrs.meta.description; 23 43 categories = [ "Education" ]; 24 44 }) 25 45 ]; ··· 29 49 30 50 mkdir -p $out/bin 31 51 makeWrapper ${jre}/bin/java $out/bin/logisim-evolution --add-flags "-jar $src" 32 - 33 - # Create icons 34 - unzip $src "resources/logisim/img/*" 35 - for size in 16 32 48 128 256; do 36 - install -D "./resources/logisim/img/logisim-icon-$size.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/logisim-evolution.png" 37 - done 52 + install -Dm444 ${icon} $out/share/icons/hicolor/scalable/apps/logisim-evolution.svg 38 53 39 54 runHook postInstall 40 55 ''; 41 56 42 - meta = with lib; { 57 + meta = { 58 + changelog = "https://github.com/logisim-evolution/logisim-evolution/releases/tag/v${finalAttrs.version}"; 43 59 homepage = "https://github.com/logisim-evolution/logisim-evolution"; 44 60 description = "Digital logic designer and simulator"; 45 61 mainProgram = "logisim-evolution"; 46 - maintainers = with maintainers; [ emilytrau ]; 47 - sourceProvenance = with sourceTypes; [ binaryBytecode ]; 48 - license = licenses.gpl2Plus; 49 - platforms = platforms.unix; 62 + maintainers = with lib.maintainers; [ emilytrau ]; 63 + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; 64 + license = lib.licenses.gpl3Only; 65 + platforms = lib.platforms.unix; 50 66 }; 51 - } 67 + })
+29 -15
pkgs/applications/science/logic/logisim/default.nix
··· 1 - { lib, stdenv, fetchurl, jre, makeWrapper, copyDesktopItems, makeDesktopItem, unzip }: 1 + { lib 2 + , stdenv 3 + , fetchurl 4 + , jre 5 + , makeBinaryWrapper 6 + , copyDesktopItems 7 + , makeDesktopItem 8 + , desktopToDarwinBundle 9 + , unzip 10 + }: 2 11 3 - stdenv.mkDerivation rec { 12 + stdenv.mkDerivation (finalAttrs: { 4 13 pname = "logisim"; 5 14 version = "2.7.1"; 6 15 7 16 src = fetchurl { 8 - url = "mirror://sourceforge/project/circuit/${lib.versions.majorMinor version}.x/${version}/logisim-generic-${version}.jar"; 9 - sha256 = "1hkvc9zc7qmvjbl9579p84hw3n8wl3275246xlzj136i5b0phain"; 17 + url = "mirror://sourceforge/project/circuit/${lib.versions.majorMinor finalAttrs.version}.x/${finalAttrs.version}/logisim-generic-${finalAttrs.version}.jar"; 18 + hash = "sha256-Nip4wSrRjCA/7YaIcsSgHNnBIUE3nZLokrviw35ie8I="; 10 19 }; 11 - 12 20 dontUnpack = true; 13 21 14 - nativeBuildInputs = [ makeWrapper copyDesktopItems unzip ]; 22 + nativeBuildInputs = [ 23 + makeBinaryWrapper 24 + copyDesktopItems 25 + unzip 26 + ] ++ lib.optionals stdenv.isDarwin [ 27 + desktopToDarwinBundle 28 + ]; 15 29 16 30 desktopItems = [ 17 31 (makeDesktopItem { 18 - name = pname; 32 + name = "logisim"; 19 33 desktopName = "Logisim"; 20 34 exec = "logisim"; 21 35 icon = "logisim"; 22 - comment = meta.description; 36 + comment = finalAttrs.meta.description; 23 37 categories = [ "Education" ]; 24 38 }) 25 39 ]; ··· 34 48 unzip $src "resources/logisim/img/*" 35 49 for size in 16 20 24 48 64 128 36 50 do 37 - install -D "./resources/logisim/img/logisim-icon-$size.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/logisim.png" 51 + install -Dm444 "./resources/logisim/img/logisim-icon-$size.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/logisim.png" 38 52 done 39 53 40 54 runHook postInstall 41 55 ''; 42 56 43 - meta = with lib; { 57 + meta = { 44 58 homepage = "http://www.cburch.com/logisim/"; 45 59 description = "Educational tool for designing and simulating digital logic circuits"; 46 60 mainProgram = "logisim"; 47 - maintainers = with maintainers; [ emilytrau ]; 48 - sourceProvenance = with sourceTypes; [ binaryBytecode ]; 49 - license = licenses.gpl2Plus; 50 - platforms = platforms.unix; 61 + maintainers = with lib.maintainers; [ emilytrau ]; 62 + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; 63 + license = lib.licenses.gpl2Only; 64 + platforms = lib.platforms.unix; 51 65 }; 52 - } 66 + })
+42 -22
pkgs/development/tools/mars-mips/default.nix
··· 1 - { lib, stdenvNoCC, fetchurl, makeWrapper, copyDesktopItems, makeDesktopItem, unzip, imagemagick, jre }: 1 + { lib 2 + , stdenv 3 + , fetchurl 4 + , makeBinaryWrapper 5 + , copyDesktopItems 6 + , makeDesktopItem 7 + , desktopToDarwinBundle 8 + , unzip 9 + , imagemagick 10 + , jre 11 + }: 2 12 3 - stdenvNoCC.mkDerivation rec { 13 + stdenv.mkDerivation (finalAttrs: { 4 14 pname = "mars-mips"; 5 15 version = "4.5"; 6 16 7 17 src = fetchurl { 8 - url = "https://courses.missouristate.edu/KenVollmar/MARS/MARS_${lib.replaceStrings ["."] ["_"] version}_Aug2014/Mars${lib.replaceStrings ["."] ["_"] version}.jar"; 9 - sha256 = "15kh1fahkkbbf4wvb6ijzny4fi5dh4pycxyzp5325dm2ddkhnd5c"; 18 + url = "https://courses.missouristate.edu/KenVollmar/MARS/MARS_${lib.replaceStrings ["."] ["_"] finalAttrs.version}_Aug2014/Mars${lib.replaceStrings ["."] ["_"] finalAttrs.version}.jar"; 19 + hash = "sha256-rDQLZ2uitiJGud935i+BrURHvP0ymrU5cWvNCZULcJY="; 10 20 }; 11 21 12 22 dontUnpack = true; 13 23 14 - nativeBuildInputs = [ makeWrapper copyDesktopItems unzip imagemagick ]; 24 + nativeBuildInputs = [ 25 + makeBinaryWrapper 26 + copyDesktopItems 27 + unzip 28 + imagemagick 29 + ] ++ lib.optionals stdenv.isDarwin [ 30 + desktopToDarwinBundle 31 + ]; 15 32 16 33 desktopItems = [ 17 34 (makeDesktopItem { 18 - name = pname; 35 + name = "mars"; 19 36 desktopName = "MARS"; 20 - exec = "mars-mips"; 21 - icon = "mars-mips"; 22 - comment = "An IDE for programming in MIPS assembly language"; 37 + exec = "Mars"; 38 + icon = "mars"; 39 + comment = finalAttrs.meta.description; 23 40 categories = [ "Development" "IDE" ]; 24 41 }) 25 42 ]; ··· 27 44 installPhase = '' 28 45 runHook preInstall 29 46 30 - export JAR=$out/share/java/${pname}/${pname}.jar 31 - install -D $src $JAR 32 - makeWrapper ${jre}/bin/java $out/bin/${pname} \ 47 + export JAR=$out/share/java/mars/Mars.jar 48 + install -Dm444 $src $JAR 49 + makeWrapper ${jre}/bin/java $out/bin/Mars \ 33 50 --add-flags "-jar $JAR" 34 51 35 - unzip ${src} images/MarsThumbnail.gif 36 - mkdir -p $out/share/pixmaps 37 - convert images/MarsThumbnail.gif $out/share/pixmaps/mars-mips.png 52 + unzip $src images/MarsThumbnail.gif 53 + for size in 16 24 32 48 64 128 256 512 54 + do 55 + mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps 56 + convert -resize "$size"x"$size" images/MarsThumbnail.gif $out/share/icons/hicolor/"$size"x"$size"/apps/mars.png 57 + done 38 58 39 59 runHook postInstall 40 60 ''; 41 61 42 - meta = with lib; { 62 + meta = { 43 63 description = "An IDE for programming in MIPS assembly language intended for educational-level use"; 44 - mainProgram = "mars-mips"; 64 + mainProgram = "Mars"; 45 65 homepage = "https://courses.missouristate.edu/KenVollmar/MARS/"; 46 - sourceProvenance = with sourceTypes; [ binaryBytecode ]; 47 - license = licenses.mit; 48 - maintainers = with maintainers; [ emilytrau ]; 49 - platforms = platforms.all; 66 + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; 67 + license = lib.licenses.mit; 68 + maintainers = with lib.maintainers; [ emilytrau ]; 69 + platforms = lib.platforms.all; 50 70 }; 51 - } 71 + })