Add Squeak and Squeaker

This commit is contained in:
Emery Hemingway 2022-03-25 09:34:50 -05:00
parent 7fee5e35fe
commit cecebbc118
3 changed files with 96 additions and 1 deletions

View File

@ -25,6 +25,10 @@
};
preserves-tools = final.callPackage ./preserves-tools { rust = rust'; };
squeak = final.callPackage ./squeak { };
squeaker = final.python3Packages.callPackage ./squeaker { };
syndicate-server =
final.callPackage ./syndicate-server { rust = rust'; };
};
@ -35,7 +39,7 @@
packages = self.lib.mapAttrs (system: pkgs:
with pkgs; {
inherit preserves-tools syndicate-server;
inherit preserves-tools squeak squeaker syndicate-server;
inherit (nimPackages) xdg_open_ng;
preserves-nim = nimPackages.preserves;
preserves-py = python3Packages.preserves;

59
squeak/default.nix Normal file
View File

@ -0,0 +1,59 @@
{ lib, stdenv, fetchurl, autoPatchelfHook, makeWrapper, unzip, alsa-lib, libGL
, libpulseaudio, libuuid, nas, openssl, pango, sndio, xorg }:
let
versionA = "6.0alpha";
versionB = "21485";
versionC = "202112201228";
in stdenv.mkDerivation rec {
pname = "squeak";
version = "${versionA}-${versionB}-${versionC}";
src = fetchurl {
url =
"http://files.squeak.org/trunk/Squeak${versionA}-${versionB}-64bit/Squeak${versionA}-${versionB}-64bit-${versionC}-Linux-x64.tar.gz";
sha256 = "sha256-4E32VJaZyQlE71Z98woiMX5shbaj6/cS0i7uloABANU=";
};
nativeBuildInputs = [ autoPatchelfHook makeWrapper unzip ];
buildInputs = with xorg; [
alsa-lib
libGL
libICE
libSM
libX11
libXext
libXrender
libpulseaudio
libuuid
nas
pango
sndio
];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp -a bin $out/lib
cp -a shared/* $out/lib
makeWrapper $out/lib/squeak $out/bin/squeak \
--prefix LD_LIBRARY_PATH ":" "$out/lib:${
lib.makeLibraryPath [ openssl ]
}" \
--set SQUEAK_IMAGE $out/lib/Squeak${versionA}-${versionB}-64bit.image
'';
preFixup = ''
patchelf $out/lib/vm-sound-sndio.so \
--replace-needed libsndio.so.6.1 libsndio.so
'';
meta = {
description = "Squeak virtual machine and image";
homepage = "https://squeak.org/";
license = with lib.licenses; [ asl20 mit ];
maintainers = with lib.maintainers; [ ehmry ];
platforms = [ "x86_64-linux" ];
};
}

32
squeaker/default.nix Normal file
View File

@ -0,0 +1,32 @@
{ lib, buildPythonApplication, fetchFromGitHub }:
buildPythonApplication rec {
pname = "squeaker";
version = "unstable-2022-03-04";
src = fetchFromGitHub {
owner = "tonyg";
repo = pname;
rev = "caf2ef0b6d5c3cd211b966d3933d4baa885676b5";
hash = "sha256-DXYKT3buaQ0WfebNwdGT3s2eAAKpndmZ3TczCD/alH0=";
};
# TODO: could inject squeak into the wrapper,
# but for now let the environment pick the VM
# propagatedBuildInputs = [ squeak ];
dontBuild = true;
doCheck = false;
installPhase = ''
runHook preInstall
install -Dt $out/bin squeaker
runHook postInstall
'';
meta = src.meta // {
description = "Like Docker, but for Squeak";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ehmry ];
};
}