1{ fetchurl, fetchgit, stdenv, xorg, makeWrapper, ncurses, cmake }:
2
3stdenv.mkDerivation rec {
4 # The Self wrapper stores source in $XDG_DATA_HOME/self or ~/.local/share/self
5 # so that it can be written to when using the Self transposer. Running 'Self'
6 # after installation runs without an image. You can then build a Self image with:
7 # $ cd ~/.local/share/self/objects
8 # $ Self
9 # > 'worldBuilder.self' _RunScript
10 #
11 # This image can later be started with:
12 # $ Self -s myimage.snap
13 #
14 version = "4.5.0";
15 name = "self-${version}";
16
17 src = fetchgit {
18 url = "https://github.com/russellallen/self";
19 rev = "d16bcaad3c5092dae81ad0b16d503f2a53b8ef86";
20 sha256 = "1dhs6209407j0ll9w9id31vbawdrm9nz1cjak8g8hixrw1nid4i5";
21 };
22
23 buildInputs = [ ncurses xorg.libX11 xorg.libXext makeWrapper cmake ];
24
25 selfWrapper = ./self;
26
27 installPhase = ''
28 mkdir -p "$out"/bin
29 cp ./vm/Self "$out"/bin/Self.wrapped
30 mkdir -p "$out"/share/self
31 cp -r ../objects "$out"/share/self/
32 makeWrapper $selfWrapper $out/bin/Self \
33 --set SELF_ROOT "$out"
34 '';
35
36 meta = {
37 description = "A prototype-based dynamic object-oriented programming language, environment, and virtual machine";
38 homepage = http://selflanguage.org/;
39 license = stdenv.lib.licenses.bsd3;
40 maintainers = [ stdenv.lib.maintainers.doublec ];
41 platforms = with stdenv.lib.platforms; linux;
42 broken = true; # segfaults on gcc > 4.4
43 };
44}