From 78cd46512c0ca2374474edfd86cee7ec2407cb57 Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Sat, 4 Apr 2020 18:20:32 -0300 Subject: babashka: 0.0.71 -> 0.0.78 --- pkgs/development/interpreters/clojure/babashka.nix | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 pkgs/development/interpreters/clojure/babashka.nix (limited to 'pkgs/development/interpreters/clojure/babashka.nix') diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix new file mode 100644 index 000000000000..db849bb542de --- /dev/null +++ b/pkgs/development/interpreters/clojure/babashka.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchurl, graalvm8 }: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "babashka"; + version = "0.0.78"; + + reflectionJson = fetchurl { + name = "reflection.json"; + url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-reflection.json"; + sha256 = "1m1nwdxjsc6bkdzkbsll316ly0c3qxaimjzyfph1220irjxnm7xf"; + }; + + src = fetchurl { + url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar"; + sha256 = "01w990zk5qjrbnc846snh6na002kdyrlrfnqwg03ibx20g3mr7if"; + }; + + dontUnpack = true; + + buildInputs = [ graalvm8 ]; + + buildPhase = '' + native-image \ + -jar ${src} \ + -H:Name=bb \ + -H:+ReportExceptionStackTraces \ + -J-Dclojure.spec.skip-macros=true \ + -J-Dclojure.compiler.direct-linking=true \ + "-H:IncludeResources=BABASHKA_VERSION" \ + "-H:IncludeResources=SCI_VERSION" \ + -H:ReflectionConfigurationFiles=${reflectionJson} \ + --initialize-at-run-time=java.lang.Math\$RandomNumberGeneratorHolder \ + --initialize-at-build-time \ + -H:Log=registerResource: \ + -H:EnableURLProtocols=http,https \ + --enable-all-security-services \ + -H:+JNI \ + --verbose \ + --no-fallback \ + --no-server \ + --report-unsupported-elements-at-runtime \ + "-J-Xmx3g" + ''; + + installPhase = '' + mkdir -p $out/bin + cp bb $out/bin/bb + ''; + + meta = with stdenv.lib; { + description = "A Clojure babushka for the grey areas of Bash"; + longDescription = '' + The main idea behind babashka is to leverage Clojure in places where you + would be using bash otherwise. + + As one user described it: + + I’m quite at home in Bash most of the time, but there’s a substantial + grey area of things that are too complicated to be simple in bash, but + too simple to be worth writing a clj/s script for. Babashka really + seems to hit the sweet spot for those cases. + + Goals: + + - Low latency Clojure scripting alternative to JVM Clojure. + - Easy installation: grab the self-contained binary and run. No JVM needed. + - Familiarity and portability: + - Scripts should be compatible with JVM Clojure as much as possible + - Scripts should be platform-independent as much as possible. Babashka + offers support for linux, macOS and Windows. + - Allow interop with commonly used classes like java.io.File and System + - Multi-threading support (pmap, future, core.async) + - Batteries included (tools.cli, cheshire, ...) + - Library support via popular tools like the clojure CLI + ''; + homepage = "https://github.com/borkdude/babashka"; + license = licenses.epl10; + platforms = graalvm8.meta.platforms; + maintainers = with maintainers; [ bhougland DerGuteMoritz jlesquembre ]; + }; +} -- cgit 1.4.1