diff --git a/pkgs/development/compilers/lobster/default.nix b/pkgs/development/compilers/lobster/default.nix new file mode 100644 index 000000000000..f8d31f12cd45 --- /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 000000000000..ceb0536b582c --- /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 ced7d0cfbcd5..c56fe9315efb 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;