From cecebbc118547c13faaab197b062adf83eb85c1f Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 25 Mar 2022 09:34:50 -0500 Subject: [PATCH] Add Squeak and Squeaker --- flake.nix | 6 ++++- squeak/default.nix | 59 ++++++++++++++++++++++++++++++++++++++++++++ squeaker/default.nix | 32 ++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 squeak/default.nix create mode 100644 squeaker/default.nix diff --git a/flake.nix b/flake.nix index 06ea77c..efb16d0 100644 --- a/flake.nix +++ b/flake.nix @@ -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; diff --git a/squeak/default.nix b/squeak/default.nix new file mode 100644 index 0000000..f275f47 --- /dev/null +++ b/squeak/default.nix @@ -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" ]; + }; +} diff --git a/squeaker/default.nix b/squeaker/default.nix new file mode 100644 index 0000000..74c7489 --- /dev/null +++ b/squeaker/default.nix @@ -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 ]; + }; +}