1{ lib, stdenv, file, makeDesktopItem, cog32, spur32, spur64 ? "none" }:
2
3stdenv.mkDerivation rec {
4 name = "pharo";
5 src = ./pharo-vm.sh;
6 inherit cog32 spur32 spur64 file;
7 magic = ./magic;
8 desktopItem = makeDesktopItem {
9 inherit name;
10 desktopName = "Pharo VM";
11 genericName = "Pharo Virtual Machine";
12 exec = "pharo %F";
13 icon = "pharo";
14 startupNotify = false;
15 categories = [ "Development" ];
16 mimeTypes = [ "application/x-pharo-image" ];
17 };
18 unpackPhase = ''
19 cp $src ./pharo-vm.sh
20 sourceRoot=$PWD
21 '';
22 buildPhase = ''
23 substituteAllInPlace ./pharo-vm.sh
24 '';
25 installPhase = ''
26 mkdir -p $out/bin
27 cp pharo-vm.sh $out/bin/pharo
28 chmod +x $out/bin/pharo
29 '';
30 meta = {
31 description = "Pharo virtual machine (multiple variants)";
32
33 longDescription = ''
34 Pharo's goal is to deliver a clean, innovative, free open-source
35 Smalltalk-inspired environment. By providing a stable and small core
36 system, excellent dev tools, and maintained releases, Pharo is an
37 attractive platform to build and deploy mission critical applications.
38
39 This package provides a front-end for starting the virtual
40 machine. The command 'pharo-vm' automatically detects the type
41 of image and executes a suitable virtual machine: CogV3, Spur,
42 or Spur64. This makes it easy to open Pharo images because you
43 do not have to worry about which virtual machine variant is
44 required.
45
46 More about the Cog family of virtual machines:
47 http://www.mirandabanda.org/cogblog/about-cog/
48 '';
49
50 homepage = "http://pharo.org";
51 license = lib.licenses.mit;
52 maintainers = [ lib.maintainers.lukego ];
53 # Pharo VM sources are packaged separately for darwin (OS X)
54 platforms = lib.filter
55 (system: with lib.systems.elaborate { inherit system; };
56 isUnix && !isDarwin)
57 lib.platforms.mesaPlatforms;
58 };
59}
60