1{ lib
2, stdenv
3, fetchurl
4, makeBinaryWrapper
5, copyDesktopItems
6, makeDesktopItem
7, desktopToDarwinBundle
8, unzip
9, imagemagick
10, jre
11}:
12
13stdenv.mkDerivation (finalAttrs: {
14 pname = "mars-mips";
15 version = "4.5";
16
17 src = fetchurl {
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=";
20 };
21
22 dontUnpack = true;
23
24 nativeBuildInputs = [
25 makeBinaryWrapper
26 copyDesktopItems
27 unzip
28 imagemagick
29 ] ++ lib.optionals stdenv.isDarwin [
30 desktopToDarwinBundle
31 ];
32
33 desktopItems = [
34 (makeDesktopItem {
35 name = "mars";
36 desktopName = "MARS";
37 exec = "Mars";
38 icon = "mars";
39 comment = finalAttrs.meta.description;
40 categories = [ "Development" "IDE" ];
41 })
42 ];
43
44 installPhase = ''
45 runHook preInstall
46
47 export JAR=$out/share/java/mars/Mars.jar
48 install -Dm444 $src $JAR
49 makeWrapper ${jre}/bin/java $out/bin/Mars \
50 --add-flags "-jar $JAR"
51
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
58
59 runHook postInstall
60 '';
61
62 meta = {
63 description = "An IDE for programming in MIPS assembly language intended for educational-level use";
64 mainProgram = "Mars";
65 homepage = "https://courses.missouristate.edu/KenVollmar/MARS/";
66 sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
67 license = lib.licenses.mit;
68 maintainers = with lib.maintainers; [ emilytrau ];
69 platforms = lib.platforms.all;
70 };
71})