about summary refs log tree commit diff
path: root/pkgs/development/interpreters/bqn
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2021-10-01 03:33:58 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2021-10-03 21:03:36 -0300
commitfc88ec5d9d0ad91a091645655e78f46ac642fb0e (patch)
treef3f75bdb214401601c30e4c0b7c1ee2067bb510e /pkgs/development/interpreters/bqn
parent24f04ee6bb3689a7860dfc7130082c1ad7d733a7 (diff)
dbqn: init at 0.0.0+unstable=2021-10-02
Many thanks @sternenseemann for the expression. I made a rewrite to keep it
clean.
Diffstat (limited to 'pkgs/development/interpreters/bqn')
-rw-r--r--pkgs/development/interpreters/bqn/dzaima-bqn/default.nix71
1 files changed, 71 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix b/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix
new file mode 100644
index 0000000000000..6c4022ed02511
--- /dev/null
+++ b/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, jdk
+, makeWrapper
+, buildNativeImage ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dbqn" + lib.optionalString buildNativeImage "-native";
+  version = "0.0.0+unstable=2021-10-02";
+
+  src = fetchFromGitHub {
+    owner = "dzaima";
+    repo = "BQN";
+    rev = "d6bd66d26a89b8e9f956ec4f6b6bc5dcb5861a09";
+    hash = "sha256-BLRep7OGHfDFowIAsBS19PTzgIhrdKMnO2JSjKuwGYo=";
+  };
+
+  buildInputs = lib.optional (!buildNativeImage) jdk;
+
+  nativeBuildInputs = [
+    makeWrapper
+  ] ++ lib.optional buildNativeImage jdk;
+
+  dontConfigure = true;
+
+  buildPhase = ''
+    runHook preBuild
+
+    mkdir -p output
+    javac --release 8 -encoding UTF-8 -d ./output $(find src -name '*.java')
+    (cd output; jar cvfe ../BQN.jar BQN.Main *)
+    rm -fr output
+  '' + lib.optionalString buildNativeImage ''
+    native-image --report-unsupported-elements-at-runtime \
+      -J-Dfile.encoding=UTF-8 -jar BQN.jar dbqn
+  '' + ''
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+
+  '' + (if buildNativeImage then ''
+    mv dbqn $out/bin
+  '' else ''
+    mkdir -p $out/share/${pname}
+    mv BQN.jar $out/share/${pname}/
+
+    makeWrapper "${lib.getBin jdk}/bin/java" "$out/bin/dbqn" \
+      --add-flags "-jar $out/share/${pname}/BQN.jar"
+  '') + ''
+    ln -s $out/bin/dbqn $out/bin/bqn
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/dzaima/BQN";
+    description = "A BQN implementation in Java" + lib.optionalString buildNativeImage ", compiled as a native image";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres sternenseemann ];
+    inherit (jdk.meta) platforms;
+    priority = if buildNativeImage then 10 else 0;
+  };
+}
+# TODO: Processing app
+# TODO: minimalistic JDK