nixpkgs/pkgs/applications/editors/eclipse/default.nix

154 lines
5.5 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, patchelf, makeDesktopItem, makeWrapper
, freetype, fontconfig, libX11, libXext, libXrender, zlib
, glib, gtk, libXtst, jre
# defaulting to this version because not all installable plugins work with 3.5.2 yet
# can also be set to "latest"
, version ? "3.5.1"
}:
/*
Note: Eclipse stores various Eclipse instance specific data in ~/.eclipse/*-instance/...
The '*' depends on the executable location of Eclipse.
So if an Eclipse dependency such as gtk changes a different Eclipse setup directory will be used and
the plugins and update site list and more global settings seem to be gone.
Staring Eclipse from ~/.nix-profile/bin/eclipse doesn't help.
So I suggest copying the store path to ~/eclipse and run ~/eclipse/bin/eclipse instead.
However this still has some drawbacks: If you run nix-collect-garbage the gtk
libs the wrapper refers to might be gone. It should be easy for you to
replace the imortant lines in the wrapper.
You can also put this eclipse wrapper script (which was removed from
all-packages.nix -r 18458)
to your packageOverrides section and use that to run eclipse/eclipse.
Its parameterized by system because you may want to run both: i686 and x86_64 systems.
eclipseRunner =
pkgs.stdenv.mkDerivation {
name = "nix-eclipse-runner-script-${stdenv.system}";
phases = "installPhase";
installPhase = ''
ensureDir $out/bin
target=$out/bin/nix-run-eclipse-${stdenv.system}
cat > $target << EOF
#!/bin/sh
export PATH=${pkgs.jre}/bin:\$PATH
export LD_LIBRARY_PATH=${pkgs.gtkLibs216.glib}/lib:${pkgs.gtkLibs216.gtk}/lib:${pkgs.xlibs.libXtst}/lib
# If you run out of XX space try these? -vmargs -Xms512m -Xmx2048m -XX:MaxPermSize=256m
eclipse="\$1"; shift
exec \$eclipse -vmargs -Xms512m -Xmx2048m -XX:MaxPermSize=256m "\$@"
EOF
chmod +x $target
'';
meta = {
description = "provide environment to run Eclipse";
longDescription = ''
Is there one distribution providing support for up to date Eclipse installations?
There are various reasons why not.
Installing binaries just works. Get Eclipse binaries form eclipse.org/downloads
install this wrapper then run Eclipse like this:
nix-run-eclipse $PATH_TO_ECLIPSE/eclipse/eclipse
and be happy. Everything works including update sites.
'';
maintainers = [pkgs.lib.maintainers.marcweber];
platforms = pkgs.lib.platforms.linux;
};
};
*/
let
v = if version == "latest" then "3.5.2" else version;
in
assert stdenv ? glibc;
stdenv.mkDerivation rec {
name = "eclipse-${v}";
src =
if v == "3.5.2" then
if stdenv.system == "x86_64-linux" then
fetchurl {
url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz;
md5 = "54e2ce0660b2b1b0eb4267acf70ea66d";
}
else
fetchurl {
url = http://mirror.selfnet.de/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
md5 = "bde55a2354dc224cf5f26e5320e72dac";
}
else if v == "3.5.1" then
if stdenv.system == "x86_64-linux" then
fetchurl {
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk-x86_64.tar.gz;
sha256 = "132zd7q9q29h978wnlsfbrlszc85r1wj30yqs2aqbv3l5xgny1kk";
}
else
fetchurl {
url = http://mirrors.linux-bg.org/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk.tar.gz;
sha256 = "0a0lpa7gxg91zswpahi6fvg3csl4csvlym4z2ad5cc1d4yvicp56";
}
else if v == "3.6.2" then
if stdenv.system == "x86_64-linux" then
fetchurl {
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz;
sha256 = "0dfcfadcd6337c897fbfd5b292de481931dfce12d43289ecb93691fd27dd47f4";
}
else
fetchurl {
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz;
sha256 = "1bh8ykliqr8wbciv13vpiy50rvm7yszk7y8dslr796dbwhi5b1cj";
}
else throw "no source for eclipse version ${v} known";
desktopItem = makeDesktopItem {
name = "Eclipse";
exec = "eclipse";
icon = "eclipse";
comment = "Integrated Development Environment";
desktopName = "Eclipse IDE";
genericName = "Integrated Development Environment";
categories = "Application;Development;";
};
buildInputs = [ makeWrapper patchelf ];
buildCommand = ''
# Unpack tarball
ensureDir $out
tar xfvz $src -C $out
# Patch binaries
interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2)
patchelf --set-interpreter $interpreter $out/eclipse/eclipse
patchelf --set-rpath ${freetype}/lib:${fontconfig}/lib:${libX11}/lib:${libXrender}/lib:${zlib}/lib $out/eclipse/libcairo-swt.so
# Create wrapper script
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
--prefix PATH : ${jre}/bin \
--prefix LD_LIBRARY_PATH : ${glib}/lib:${gtk}/lib:${libXtst}/lib
# Create desktop item
ensureDir $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications
'';
meta = {
homepage = http://www.eclipse.org/;
description = "A extensible multi-language software development environment";
longDescription = ''
'';
};
}