1{
2 lib,
3 stdenvNoCC,
4 fetchFromGitHub,
5 ant,
6 jdk17,
7 makeWrapper,
8 stripJavaArchivesHook,
9}:
10
11let
12 jdk = jdk17; # Only java 17 is supported as of 23.09
13in
14stdenvNoCC.mkDerivation (finalAttrs: {
15 pname = "openrocket";
16 version = "23.09";
17
18 src = fetchFromGitHub {
19 owner = "openrocket";
20 repo = "openrocket";
21 rev = "release-${finalAttrs.version}";
22 hash = "sha256-Dg/v72N9cDG9Ko5JIcZxGxh+ClRDgf5Jq5DvQyCiYOs=";
23 fetchSubmodules = true;
24 };
25
26 nativeBuildInputs = [
27 ant
28 jdk
29 makeWrapper
30 stripJavaArchivesHook
31 ];
32
33 buildPhase = ''
34 runHook preBuild
35 ant
36 runHook postBuild
37 '';
38
39 doCheck = true;
40
41 checkPhase = ''
42 runHook preCheck
43 ant unittest
44 runHook postCheck
45 '';
46
47 installPhase = ''
48 runHook preInstall
49
50 sed -i "s|Icon=.*|Icon=openrocket|g" snap/gui/openrocket.desktop
51 install -Dm644 snap/gui/openrocket.desktop -t $out/share/applications
52 install -Dm644 snap/gui/openrocket.png -t $out/share/icons/hicolor/256x256/apps
53 install -Dm644 swing/build/jar/OpenRocket.jar -t $out/share/openrocket
54
55 makeWrapper ${jdk}/bin/java $out/bin/openrocket \
56 --add-flags "-jar $out/share/openrocket/OpenRocket.jar"
57
58 runHook postInstall
59 '';
60
61 meta = {
62 changelog = "https://github.com/openrocket/openrocket/releases/tag/${finalAttrs.src.rev}";
63 description = "Model-rocketry aerodynamics and trajectory simulation software";
64 homepage = "https://openrocket.info";
65 license = lib.licenses.gpl3Plus;
66 mainProgram = "openrocket";
67 maintainers = with lib.maintainers; [ tomasajt ];
68 platforms = jdk.meta.platforms;
69 sourceProvenance = with lib.sourceTypes; [
70 fromSource
71 binaryBytecode # source bundles dependencies as jars
72 ];
73 };
74})