anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / office / jameica / default.nix
blob3f9e20d7a042c283b12ae0c5b9087f2d91892350
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , makeDesktopItem
5 , makeWrapper
6 , wrapGAppsHook3
7 , stripJavaArchivesHook
8 , ant
9 , jdk
10 , jre
11 , gtk2
12 , glib
13 , libXtst
14 , Cocoa
17 let
18   _version = "2.10.4";
19   _build = "487";
20   version = "${_version}-${_build}";
22   swtSystem =
23     if stdenv.hostPlatform.system == "i686-linux" then "linux"
24     else if stdenv.hostPlatform.system == "x86_64-linux" then "linux64"
25     else if stdenv.hostPlatform.system == "aarch64-linux" then "linux-arm64"
26     else if stdenv.hostPlatform.system == "x86_64-darwin" then "macos64"
27     else if stdenv.hostPlatform.system == "aarch64-darwin" then "macos-aarch64"
28     else throw "Unsupported system: ${stdenv.hostPlatform.system}";
30   desktopItem = makeDesktopItem {
31     name = "jameica";
32     exec = "jameica";
33     comment = "Free Runtime Environment for Java Applications.";
34     desktopName = "Jameica";
35     genericName = "Jameica";
36     icon = "jameica";
37     categories = [ "Office" ];
38   };
40 stdenv.mkDerivation rec {
41   pname = "jameica";
42   inherit version;
44   src = fetchFromGitHub {
45     owner = "willuhn";
46     repo = "jameica";
47     rev = "V_${builtins.replaceStrings ["."] ["_"] _version}_BUILD_${_build}";
48     hash = "sha256-MSVSd5DyVL+dcfTDv1M99hxickPwT2Pt6QGNsu6DGZI=";
49   };
51   nativeBuildInputs = [ ant jdk wrapGAppsHook3 makeWrapper stripJavaArchivesHook ];
52   buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ gtk2 glib libXtst ]
53     ++ lib.optional stdenv.hostPlatform.isDarwin Cocoa;
55   dontWrapGApps = true;
57   # there is also a build.gradle, but it only seems to be used to vendor 3rd party libraries
58   # and is not able to build the application itself
59   buildPhase = ''
60     runHook preBuild
61     ant -f build -Dsystem.version=${version} init compile jar ${lib.optionalString stdenv.hostPlatform.isDarwin "zip lib"}
62     runHook postBuild
63   '';
65   installPhase = ''
66     runHook preInstall
68     mkdir -p $out/libexec $out/lib $out/bin $out/share/{applications,jameica-${version},java}/
70     # copy libraries except SWT
71     cp $(find lib -type f -iname '*.jar' | grep -ve 'swt/.*/swt.jar') $out/share/jameica-${version}/
72     # copy platform-specific SWT
73     cp lib/swt/${swtSystem}/swt.jar $out/share/jameica-${version}/
75     install -Dm644 releases/${_version}-*/jameica/jameica.jar $out/share/java/
76     install -Dm644 plugin.xml $out/share/java/
77     install -Dm644 build/jameica-icon.png $out/share/pixmaps/jameica.png
78     cp ${desktopItem}/share/applications/* $out/share/applications/
79   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
81     # Create .app bundle for macOS
82     mkdir -p $out/Applications
83     chmod +x releases/${_version}-${_build}-${_build}/tmp/jameica.app/jameica*.sh
84     cp -r releases/${_version}-${_build}-${_build}/tmp/jameica.app $out/Applications/Jameica.app
85   '' + ''
87     runHook postInstall
88   '';
90   postFixup = ''
91     makeWrapper ${jre}/bin/java $out/bin/jameica \
92       --add-flags "-cp $out/share/java/jameica.jar:$out/share/jameica-${version}/* ${
93         lib.optionalString stdenv.hostPlatform.isDarwin ''-Xdock:name="Jameica" -XstartOnFirstThread''
94       } de.willuhn.jameica.Main" \
95       --prefix LD_LIBRARY_PATH : ${lib.escapeShellArg (lib.makeLibraryPath buildInputs)} \
96       --chdir "$out/share/java/" \
97       "''${gappsWrapperArgs[@]}"
98   '';
100   meta = with lib; {
101     homepage = "https://www.willuhn.de/products/jameica/";
102     description = "Free Runtime Environment for Java Applications";
103     longDescription = ''
104       Runtime Environment for plugins like Hibiscus (HBCI Online Banking),
105       SynTAX (accounting) and JVerein (club management).
106     '';
107     sourceProvenance = with sourceTypes; [
108       fromSource
109       binaryBytecode # source bundles dependencies as jars
110     ];
111     license = licenses.gpl2Plus;
112     platforms = platforms.unix;
113     maintainers = with maintainers; [ flokli r3dl3g ];
114     mainProgram = "jameica";
115   };