nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenvNoCC,
4 fetchFromGitHub,
5 jre,
6 makeWrapper,
7 buildNativeImage ? false,
8}:
9
10stdenvNoCC.mkDerivation rec {
11 pname = "dbqn" + lib.optionalString buildNativeImage "-native";
12 version = "0.2.2";
13
14 src = fetchFromGitHub {
15 owner = "dzaima";
16 repo = "BQN";
17 rev = "v${version}";
18 hash = "sha256-AUfT7l7zr/pyG63wX8FMej8RUg7tXC1aroCrunjyw/8=";
19 };
20
21 nativeBuildInputs = [
22 jre
23 makeWrapper
24 ];
25
26 dontConfigure = true;
27
28 postPatch = ''
29 patchShebangs --build ./build8
30 '';
31
32 buildPhase = ''
33 runHook preBuild
34
35 ./build8
36 ''
37 + lib.optionalString buildNativeImage ''
38 native-image --report-unsupported-elements-at-runtime \
39 -H:CLibraryPath=${lib.getLib jre}/lib -J-Dfile.encoding=UTF-8 \
40 -jar BQN.jar dbqn
41 ''
42 + ''
43 runHook postBuild
44 '';
45
46 installPhase = ''
47 runHook preInstall
48
49 mkdir -p $out/bin
50
51 ''
52 + (
53 if buildNativeImage then
54 ''
55 mv dbqn $out/bin
56 ''
57 else
58 ''
59 mkdir -p $out/share/dbqn
60 mv BQN.jar $out/share/dbqn/
61
62 makeWrapper "${lib.getBin jre}/bin/java" "$out/bin/dbqn" \
63 --add-flags "-jar $out/share/dbqn/BQN.jar"
64 ''
65 )
66 + ''
67 ln -s $out/bin/dbqn $out/bin/bqn
68
69 runHook postInstall
70 '';
71
72 meta = {
73 homepage = "https://github.com/dzaima/BQN";
74 description =
75 "BQN implementation in Java" + lib.optionalString buildNativeImage ", compiled as a native image";
76 license = lib.licenses.mit;
77 maintainers = with lib.maintainers; [
78 sternenseemann
79 ];
80 inherit (jre.meta) platforms;
81 broken = stdenvNoCC.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/dbqn-native.x86_64-darwin
82 };
83}