diff --git a/pkgs/applications/editors/eclipse-new/3.3.1.1.nix b/pkgs/applications/editors/eclipse-new/3.3.1.1.nix
new file mode 100644
index 00000000000..2c039b9213e
--- /dev/null
+++ b/pkgs/applications/editors/eclipse-new/3.3.1.1.nix
@@ -0,0 +1,96 @@
+args: with args; let
+
+ # hint: eclipse -data
+
+ eclipsePlugin = name : src : stdenv.mkDerivation {
+ inherit src;
+ name = "${name}-eclipse-plugin";
+ phases = "unpackPhase";
+ buildInputs = [ args.unzip ];
+ unpackPhase = ''
+ mkdir tmp; cd tmp
+ unpackFile "$src"
+ [ -d ./eclipse ] || { # if plugin doesn't contain the eclipse directory itself create it (eg viPlugin)
+ mkdir "$TMP/eclipse"
+ mv * "$TMP/eclipse"
+ cd "$TMP"
+ }
+ ensureDir $out;
+ mv eclipse "$out"
+ '';
+ };
+
+ eclipseEnv = {name, eclipse, links}: runCommand name { inherit links eclipse; } ''
+ ensureDir $out/eclipse/links;
+ cp -r "$eclipse/bin" "$out/bin"
+ for f in $eclipse/eclipse/*; do
+ # using ln eclipse doesn't take the correct link folder :-( (TODO)
+ # ln -s "$f" "$out/eclipse/$(basename "$f")"
+ cp -r "$f" "$out/eclipse/$(basename "$f")"
+ done
+ # create links
+ for link in $links; do
+ echo "path=$link" >> "$out/eclipse/links/$(basename "$link").link"
+ done
+ '';
+
+ # mmh, this derivation is superfluous. We could also create them directly
+ # instead of symlinking them into the final env build by buildEnv
+ linkFile = deriv : writeTextFile {
+ name = "${deriv.name}-eclipse-feature-link";
+ destination = "/eclipse/links/${deriv.name}.link";
+ };
+
+ attr = rec {
+ eclipse = import ( ../eclipse-new + "/${version}/eclipse.nix") args; # without any additional plugins, why can't I use ./ instead of ../eclipse-new ?
+
+ plugins = rec {
+
+ viPlugin = { # see its license!
+ plugin = eclipsePlugin "viPlugin_1.15.6" (fetchurl {
+ url = http://www.satokar.com/viplugin/files/viPlugin_1.15.6.zip;
+ sha256 = "0p53q45a754j143pnnp51rjwj7lzawcxfy9xzpjasdic4a2l0f96";
+ # license = "Other/Proprietary License with Free Trial";
+ });
+ };
+
+ # PHP developement
+ emfSdoXsdSDK232 = {
+ plugin = eclipsePlugin "emf-sdo-xsd-SDK-2.3.2" (fetchurl {
+ url = http://eclipsemirror.yoxos.com/eclipse.org/modeling/emf/emf/downloads/drops/2.3.2/R200802051830/emf-sdo-xsd-SDK-2.3.2.zip;
+ sha256 = "1k20fn47x1giwhc80rzkqaw3mn0p3861sjp7aw39842lv2hjwn1c";
+ });
+ };
+ gefSDK332 = {
+ plugin = eclipsePlugin "GEF-SDK-3.3.2" (fetchurl {
+ url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/tools/gef/downloads/drops/3.3.2/R200802211602/GEF-SDK-3.3.2.zip;
+ sha256 = "1pk5qlwk0iyvs85s966y96ks8vq1g81fivvbf4lh43155rg0z037";
+ });
+ };
+ wtpSdkR202X = {
+ plugin = eclipsePlugin "wtp-sdk-R-2.0.2-20080223205547" (fetchurl {
+ url = http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/webtools/downloads/drops/R2.0/R-2.0.2-20080223205547/wtp-sdk-R-2.0.2-20080223205547.zip;
+ sha256 = "0hmmmqzcd67jir2gmjd0xri5w2434xb2dk21hpgcv2qp0h9hhx0f";
+ });
+ };
+ pdt = {
+ deps = [ wtpSdkR202X gefSDK332 emfSdoXsdSDK232 ];
+ plugin = eclipsePlugin "pdt-runtime-1.0.3" (fetchurl {
+ url = http://sunsite.informatik.rwth-aachen.de:3080/eclipse/tools/pdt/downloads/drops/1.0.3/R200806030000/pdt-runtime-1.0.3.zip;
+ sha256 = "0wd2vc9bqrk5mqj5al2ichm8lxlf7gwifsb9lzv1d896j04ilm96";
+ });
+ };
+ };
+ };
+ pluginToList = a : [ a.plugin ] ++ lib.optionals (a ? deps ) (lib.concatMap pluginToList a.deps);
+ in
+ eclipseEnv {
+ name = "eclipse-${version}-with-plugins";
+ inherit (attr) eclipse;
+ links =
+ # example custom config: eclipse = { plugins = {eclipse, version, plugins } : let p = plugins; in [p.pdt]; };
+ let userChosenPlugins = (getConfig [ "eclipse" "plugins" ] ( {eclipse, version, plugins} : [] ))
+ { inherit (attr) eclipse plugins; inherit version; };
+ in # concatenate plugins and plugin dependencies
+ (lib.uniqList { inputList = lib.concatMap pluginToList userChosenPlugins; });
+ }
diff --git a/pkgs/applications/editors/eclipse-new/3.3.1.1/build-with-jdk-compiler.patch b/pkgs/applications/editors/eclipse-new/3.3.1.1/build-with-jdk-compiler.patch
new file mode 100644
index 00000000000..bac6fc035f1
--- /dev/null
+++ b/pkgs/applications/editors/eclipse-new/3.3.1.1/build-with-jdk-compiler.patch
@@ -0,0 +1,22 @@
+--- a/build.xml 2008-03-02 14:34:05.000000000 +0100
++++ b/build.xml 2008-03-02 14:34:57.000000000 +0100
+@@ -291,19 +291,6 @@
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+
diff --git a/pkgs/applications/editors/eclipse-new/3.3.1.1/eclipse.nix b/pkgs/applications/editors/eclipse-new/3.3.1.1/eclipse.nix
new file mode 100644
index 00000000000..ddd3dd83ac0
--- /dev/null
+++ b/pkgs/applications/editors/eclipse-new/3.3.1.1/eclipse.nix
@@ -0,0 +1,57 @@
+# Note, if you want to install plugins using the update manager you should
+# copy the store path to a local directory and chown -R $USER yourcopy
+# Then start your local copy
+
+args: with args;
+let arch = if stdenv.system == "x86_64-linux" then "x86_64"
+ else if stdenv.system == "i686-linux" then "x86"
+ else throw "not supported system";
+in
+args.stdenv.mkDerivation rec {
+ #name = "eclipse-classic-3.4M5";
+ name = "eclipse-classic-3.3.1.1";
+
+ unpackPhase = "unzip \$src; set -x ";
+ buildInputs = [ unzip jdk gtk glib libXtst ant makeWrapper];
+
+
+ patches=./build-with-jdk-compiler.patch;
+
+ buildPhase = "./build -os linux -ws gtk -arch ${arch}";
+
+ libraries = [gtk glib libXtst];
+
+ installPhase = "
+ t=\$out/share/${name}
+ ensureDir \$t \$out/bin
+ cd result
+ tar xfz linux-gtk-*.tar.gz
+ mv eclipse \$out
+ "
+ #copied from other eclipse expressions
+ +" rpath=
+ for i in \$libraries; do
+ rpath=\$rpath\${rpath:+:}\$i/lib
+ done
+ find \$out \\( -type f -a -perm +0100 \\) \\
+ -print \\
+ -exec patchelf --interpreter \"$(cat \$NIX_GCC/nix-support/dynamic-linker)\" \\
+ --set-rpath \"\$rpath\" {} \\;
+
+ # Make a wrapper script so that the proper JDK is found.
+ makeWrapper \$out/eclipse/eclipse \$out/bin/eclipse \\
+ --prefix PATH \":\" \"\$jdk/bin\" \\
+ --prefix LD_LIBRARY_PATH \":\" \"\$rpath\"
+ sed -e 's=exec.*=exec \$(dirname $0)/../eclipse/eclipse $@=' -i \$out/bin/eclipse
+ ";
+ # using dirname so that eclipse still runs after copying the whole store
+ # directory somewhere else (so that you can use the update manager
+
+ src = args.fetchurl {
+ #url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/S-3.4M5-200802071530/eclipse-sourceBuild-srcIncluded-3.4M5.zip;
+ #sha256 = "1w6fbpwkys65whygc045556772asggj24x8assnaba6nl70z00az";
+
+ url = http://download.micromata.de/eclipse/eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-sourceBuild-srcIncluded-3.3.1.1.zip;
+ sha256 = "0n56i7ml816f839704qlkgs5ahl0iqgwc80kjq7n7g5rl9a4vhp4";
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8afb645f8b6..6b33e8012b8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6991,6 +6991,22 @@ let
inherit (xlibs) libX11 libXinerama;
};
+
+ # put something like this into your ~/.nixpkgs/config.nix file
+ #eclipse = {
+ # plugins = {eclipse, version, plugins } : let p = plugins; in
+ # [ p.pdt # PHP developement
+ # p.viPlugin # vim keybindings (see license)
+ # ];
+ #};
+ eclipseNew = (selectVersion ../applications/editors/eclipse-new "3.3.1.1" {
+ # outdated, but 3.3.1.1 does already compile on nix, feel free to work 3.4
+ inherit fetchurl stdenv makeWrapper jdk unzip ant selectVersion buildEnv
+ getConfig lib zip writeTextFile runCommand;
+ inherit (gtkLibs) gtk glib;
+ inherit (xlibs) libXtst;
+ });
+
# building eclipise from source
# experimental tested on x86_64-linux only
eclipse_classic_src = import ../applications/editors/eclipse/eclipse_classic.nix {