codeium: 1.24.2 -> 1.30.2 (#363819)
[NixPkgs.git] / pkgs / applications / editors / eclipse / build-eclipse.nix
blob2852d7649ad602a415e61cb849350a065402cddf
2   lib,
3   stdenv,
4   makeDesktopItem,
5   freetype,
6   fontconfig,
7   libX11,
8   libXrender,
9   zlib,
10   jdk,
11   glib,
12   glib-networking,
13   gtk,
14   libXtst,
15   libsecret,
16   gsettings-desktop-schemas,
17   webkitgtk_4_0,
18   makeWrapper,
19   perl,
20   ...
24   name,
25   src ? builtins.getAttr stdenv.hostPlatform.system sources,
26   sources ? null,
27   description,
28   productVersion,
31 stdenv.mkDerivation rec {
32   inherit name src;
34   desktopItem = makeDesktopItem {
35     name = "Eclipse";
36     exec = "eclipse";
37     icon = "eclipse";
38     comment = "Integrated Development Environment";
39     desktopName = "Eclipse IDE";
40     genericName = "Integrated Development Environment";
41     categories = [ "Development" ];
42   };
44   nativeBuildInputs = [
45     makeWrapper
46     perl
47   ];
48   buildInputs = [
49     fontconfig
50     freetype
51     glib
52     gsettings-desktop-schemas
53     gtk
54     jdk
55     libX11
56     libXrender
57     libXtst
58     libsecret
59     zlib
60   ] ++ lib.optional (webkitgtk_4_0 != null) webkitgtk_4_0;
62   buildCommand = ''
63     # Unpack tarball.
64     mkdir -p $out
65     tar xfvz $src -C $out
67     # Patch binaries.
68     interpreter="$(cat $NIX_BINTOOLS/nix-support/dynamic-linker)"
69     libCairo=$out/eclipse/libcairo-swt.so
70     patchelf --set-interpreter $interpreter $out/eclipse/eclipse
71     [ -f $libCairo ] && patchelf --set-rpath ${
72       lib.makeLibraryPath [
73         freetype
74         fontconfig
75         libX11
76         libXrender
77         zlib
78       ]
79     } $libCairo
81     # Create wrapper script.  Pass -configuration to store
82     # settings in ~/.eclipse/org.eclipse.platform_<version> rather
83     # than ~/.eclipse/org.eclipse.platform_<version>_<number>.
84     productId=$(sed 's/id=//; t; d' $out/eclipse/.eclipseproduct)
86     makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
87       --prefix PATH : ${jdk}/bin \
88       --prefix LD_LIBRARY_PATH : ${
89         lib.makeLibraryPath (
90           [
91             glib
92             gtk
93             libXtst
94             libsecret
95           ]
96           ++ lib.optional (webkitgtk_4_0 != null) webkitgtk_4_0
97         )
98       } \
99       --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
100       --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
101       --add-flags "-configuration \$HOME/.eclipse/''${productId}_${productVersion}/configuration"
103     # Create desktop item.
104     mkdir -p $out/share/applications
105     cp ${desktopItem}/share/applications/* $out/share/applications
106     mkdir -p $out/share/pixmaps
107     ln -s $out/eclipse/icon.xpm $out/share/pixmaps/eclipse.xpm
109     # ensure eclipse.ini does not try to use a justj jvm, as those aren't compatible with nix
110     perl -i -p0e 's|-vm\nplugins/org.eclipse.justj.*/jre/bin.*\n||' $out/eclipse/eclipse.ini
111   ''; # */
113   meta = {
114     homepage = "https://www.eclipse.org/";
115     inherit description;
116     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
117     platforms = [
118       "x86_64-linux"
119       "aarch64-linux"
120     ];
121   };