Add inferno, a distributed cross-platform hosted OS

+97
+64
pkgs/applications/inferno/default.nix
··· 1 + { fetchurl, fetchhg, stdenv, xlibs, gcc46, makeWrapper }: 2 + 3 + stdenv.mkDerivation rec { 4 + # Inferno is a rolling release from a mercurial repository. For the verison number 5 + # of the package I'm using the mercurial commit number. 6 + version = "645"; 7 + name = "inferno-${version}"; 8 + 9 + # The mercurial repository does not contain all the components needed for the 10 + # runtime system. The 'base' package contains these. For this package I download 11 + # the base, extract the elements required from that, and add them to the source 12 + # pulled from the mercurial repository. 13 + srcBase = fetchurl { 14 + url = "http://www.vitanuova.com/dist/4e/inferno-20100120.tgz"; 15 + sha256 = "0msvy3iwl4n5k0ry0xiyysjkq0qsawmwn3hvg67hbi5y8g7f7l88"; 16 + }; 17 + 18 + src = fetchhg { 19 + url = "https://inferno-os.googlecode.com/hg"; 20 + rev = "7ab390b860ca"; 21 + sha256 = "09y0iclb3yy10gw1p0182sddg64xh60q2fx4ai7lxyfb65i76qbh"; 22 + }; 23 + 24 + # Fails with gcc48 due to inferno triggering an optimisation issue with floating point. 25 + buildInputs = [ gcc46 xlibs.libX11 xlibs.libXpm xlibs.libXext xlibs.xextproto makeWrapper ]; 26 + 27 + infernoWrapper = ./inferno; 28 + 29 + configurePhase = '' 30 + tar --strip-components=1 -xvf $srcBase inferno/fonts inferno/Mkdirs inferno/empties 31 + sed -e 's@^ROOT=.*$@ROOT='"$out"'/share/inferno@g' -e 's@^OBJTYPE=.*$@OBJTYPE=386@g' -e 's@^SYSHOST=.*$@SYSHOST=Linux@g' -i mkconfig 32 + mkdir prof 33 + sh Mkdirs 34 + ''; 35 + 36 + buildPhase = '' 37 + export PATH=$PATH:$out/share/inferno/Linux/386/bin 38 + mkdir -p $out/share/inferno 39 + cp -r . $out/share/inferno 40 + ./makemk.sh 41 + mk nuke 42 + mk 43 + ''; 44 + 45 + installPhase = '' 46 + mk install 47 + mkdir -p $out/bin 48 + makeWrapper $out/share/inferno/Linux/386/bin/emu $out/bin/emu \ 49 + --suffix LD_LIBRARY_PATH ':' "${gcc46.gcc}/lib" \ 50 + --suffix PATH ':' "$out/share/inferno/Linux/386/bin" 51 + makeWrapper $infernoWrapper $out/bin/inferno \ 52 + --suffix LD_LIBRARY_PATH ':' "${gcc46.gcc}/lib" \ 53 + --suffix PATH ':' "$out/share/inferno/Linux/386/bin" \ 54 + --set INFERNO_ROOT "$out/share/inferno" 55 + ''; 56 + 57 + meta = { 58 + description = "A compact distributed operating system for building cross-platform distributed systems"; 59 + homepage = "http://inferno-os.org/"; 60 + license = stdenv.lib.licenses.gpl2; 61 + maintainer = [ "Chris Double <chris.double@double.co.nz>" ]; 62 + platforms = with stdenv.lib.platforms; linux; 63 + }; 64 + }
+31
pkgs/applications/inferno/inferno
··· 1 + #! /usr/bin/env bash 2 + 3 + 4 + export INFERNO_HOME="$HOME/.local/share/inferno" 5 + if [ -n "$XDG_DATA_HOME" ] 6 + then export INFERNO_HOME="$XDG_DATA_HOME/inferno" 7 + fi 8 + 9 + if [ ! -d $INFERNO_HOME ]; then 10 + mkdir -p $INFERNO_HOME 11 + fi 12 + 13 + if [ ! -d $INFERNO_HOME/tmp ]; then 14 + mkdir -p $INFERNO_HOME/tmp 15 + fi 16 + 17 + for d in $INFERNO_HOME/{acme,appl,dis,lib,man,module,usr/inferno}; do 18 + if [ ! -d $d ]; then 19 + mkdir -p $d 20 + cp --no-preserve=all -r $INFERNO_ROOT/${d#$INFERNO_HOME/}/* $d/ 21 + chmod -R +w $d 22 + fi 23 + done 24 + 25 + if [ ! -d $INFERNO_HOME/usr/$USER ]; then 26 + mkdir -p $INFERNO_HOME/usr/$USER 27 + cp -r $INFERNO_ROOT/usr/inferno/* $INFERNO_HOME/usr/$USER/ 28 + chmod -R +w $INFERNO_HOME/usr/$USER 29 + fi 30 + 31 + exec emu "$@" /dis/sh.dis -c "bind -b -c '#U*$INFERNO_HOME/' /; /dis/sh.dis"
+2
pkgs/top-level/all-packages.nix
··· 8912 8912 inherit (pythonPackages) pyopengl; 8913 8913 }; 8914 8914 8915 + inferno = callPackage_i686 ../applications/inferno { }; 8916 + 8915 8917 inkscape = callPackage ../applications/graphics/inkscape { 8916 8918 inherit (pythonPackages) lxml; 8917 8919 lcms = lcms2;