about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrancesco Gazzetta <fgaz@fgaz.me>2020-01-26 16:52:00 +0100
committerFrancesco Gazzetta <fgaz@fgaz.me>2020-07-29 14:48:21 +0200
commitd42700700dee774157d64ddf1e1e3c40dbc763c4 (patch)
tree97fe1f5a9a4f2b57a06dd1f62b322976e0ac39b6
parent55f52680f977a54c42d7aeb8e9439b5398cc0e50 (diff)
lobster: init at unstable-2020-07-27
-rw-r--r--pkgs/development/compilers/lobster/default.nix66
-rw-r--r--pkgs/development/compilers/lobster/test-can-run-hello-world.nix13
-rw-r--r--pkgs/top-level/all-packages.nix6
3 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/development/compilers/lobster/default.nix b/pkgs/development/compilers/lobster/default.nix
new file mode 100644
index 0000000000000..f8d31f12cd457
--- /dev/null
+++ b/pkgs/development/compilers/lobster/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, callPackage
+
+# Linux deps
+, libGL
+, xorg
+
+# Darwin deps
+, cf-private
+, Cocoa
+, AudioToolbox
+, OpenGL
+, Foundation
+, ForceFeedback
+}:
+
+stdenv.mkDerivation rec {
+  pname = "lobster";
+  version = "unstable-2020-07-27";
+
+  src = fetchFromGitHub {
+    owner = "aardappel";
+    repo = pname;
+    rev = "9d68171494a79c83931426b624a0249a9c51882c";
+    sha256 = "0d4gn71jym662i00rdmynv53ng1lgl81s5lw1sdddgn41wzs28dd";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = if stdenv.isDarwin
+    then [
+      cf-private
+      Cocoa
+      AudioToolbox
+      OpenGL
+      Foundation
+      ForceFeedback
+    ]
+    else [
+      libGL
+      xorg.libX11
+      xorg.libXext
+    ];
+
+  preConfigure = "cd dev";
+  enableParallelBuilding = true;
+
+  passthru.tests = {
+    can-run-hello-world = callPackage ./test-can-run-hello-world.nix {};
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "http://strlen.com/lobster";
+    description = "The Lobster programming language";
+    longDescription = ''
+      Lobster is a programming language that tries to combine the advantages of
+      very static typing and memory management with a very lightweight,
+      friendly and terse syntax, by doing most of the heavy lifting for you.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/pkgs/development/compilers/lobster/test-can-run-hello-world.nix b/pkgs/development/compilers/lobster/test-can-run-hello-world.nix
new file mode 100644
index 0000000000000..ceb0536b582cc
--- /dev/null
+++ b/pkgs/development/compilers/lobster/test-can-run-hello-world.nix
@@ -0,0 +1,13 @@
+{ stdenv, lobster }:
+
+stdenv.mkDerivation {
+  name = "lobster-test-can-run-hello-world";
+  meta.timeout = 10;
+  buildCommand = ''
+    ${lobster}/bin/lobster \
+      ${lobster}/share/Lobster/samples/rosettacode/hello_world_test.lobster \
+      | grep 'Goodbye, World!'
+    touch $out
+  '';
+}
+
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ced7d0cfbcd55..c56fe9315efb1 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8992,6 +8992,12 @@ in
 
   lizardfs = callPackage ../tools/filesystems/lizardfs { };
 
+  lobster = callPackage ../development/compilers/lobster {
+    inherit (darwin) cf-private;
+    inherit (darwin.apple_sdk.frameworks)
+      Cocoa AudioToolbox OpenGL Foundation ForceFeedback;
+  };
+
   lld = llvmPackages.lld;
   lld_5 = llvmPackages_5.lld;
   lld_6 = llvmPackages_6.lld;