logisim: add darwin bundle

+29 -15
+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 + })