diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/eclipse/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/editors/eclipse/default.nix | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/eclipse/default.nix b/nixpkgs/pkgs/applications/editors/eclipse/default.nix new file mode 100644 index 000000000000..2c067250309b --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/eclipse/default.nix @@ -0,0 +1,183 @@ +{ lib, stdenv, fetchurl, makeDesktopItem, makeWrapper +, freetype, fontconfig, libX11, libXrender, zlib +, glib, gtk3, gtk2, libXtst, jdk, jdk8, gsettings-desktop-schemas +, webkitgtk ? null # for internal web browser +, buildEnv, runCommand +, callPackage +}: + +assert stdenv ? glibc; + +# https://download.eclipse.org/eclipse/downloads/ is the main place to +# find the downloads needed for new versions +# +# to test: +# $ for e in cpp modeling platform sdk java committers rcp rust; do nix build -f default.nix pkgs.eclipses.eclipse-${e} -o eclipse-${e}; done + +let + platform_major = "4"; + platform_minor = "18"; + year = "2020"; + month = "12"; + timestamp = "${year}${month}021800"; + gtk = gtk3; +in rec { + + buildEclipse = callPackage ./build-eclipse.nix { + inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib + jdk glib gtk libXtst gsettings-desktop-schemas webkitgtk + makeWrapper; + }; + + ### Eclipse CPP + + eclipse-cpp = buildEclipse { + name = "eclipse-cpp-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for C/C++ Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "MR6ddNmBKyXCyVGlGPfq6K2zJRywy4I5QDXji3rh81eJQ6zkEguo+VvD75i/szg/+FbCVA09vDVV06JgL4SHwQ=="; + }; + }; + + ### Eclipse Modeling + + eclipse-modeling = buildEclipse { + name = "eclipse-modeling-${platform_major}.${platform_minor}"; + description = "Eclipse Modeling Tools"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "hSi3IL+fWhlUfEJYv4LFO7WNbZpiofAgNGZbEOIBS0VpeHfJ5Y6UKMKMLfQlG3hlkAL5jg/cEJKb/ad4DxHbjQ=="; + }; + }; + + ### Eclipse Platform + + eclipse-platform = buildEclipse { + name = "eclipse-platform-${platform_major}.${platform_minor}"; + description = "Eclipse Platform ${year}-${month}"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; + sha512 = "cPRa7ICogpcuwzOlzSSCEcWpwpUhQuIv6lGBKuAu9mOwj7Nz0TPaWVWNqN1541uVRXVTzcWX+mwc2UBPzWUPxg=="; + }; + }; + + ### Eclipse Scala SDK + + eclipse-scala-sdk = + buildEclipse.override { jdk = jdk8; gtk = gtk2; } { + name = "eclipse-scala-sdk-4.7.0"; + description = "Eclipse IDE for Scala Developers"; + src = + fetchurl { + url = "https://downloads.typesafe.com/scalaide-pack/4.7.0-vfinal-oxygen-212-20170929/scala-SDK-4.7.0-vfinal-2.12-linux.gtk.x86_64.tar.gz"; + sha256 = "1n5w2a7mh9ajv6fxcas1gpgwb04pdxbr9v5dzr67gsz5bhahq4ya"; + }; + }; + + ### Eclipse SDK + + eclipse-sdk = buildEclipse { + name = "eclipse-sdk-${platform_major}.${platform_minor}"; + description = "Eclipse ${year}-${month} Classic"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; + sha512 = "iN6z5iSJ2bhE1IH3uJj7aiaF/nSIgIAqadvaTBpE4gkgLAXgtfraFAzgcw0zJr5m2u5mULfW45hLkmIXselniQ=="; + }; + }; + + ### Eclipse Java + + eclipse-java = buildEclipse { + name = "eclipse-java-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for Java Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "HVqsWUVNNRdcaziGdNI96R9F2VMUE4nYK1VX1G3pK+srFDlkJ7+rj2sZjtWL7WcJR1XSbT03nJJzPyp01RsCvQ=="; + }; + }; + + ### Eclipse Committers + + eclipse-committers = buildEclipse { + name = "eclipse-committers-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for Eclipse Committers and Eclipse Platform Plugin Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-committers-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "UtI4piLNRM3TsM9PzbGgsPqTkiurJ+7Q7jVra45an4YJHtfWcGTxxwUNnRzay6cHT49AjrWtVf1bovWSDXMiQA=="; + }; + }; + + ### Eclipse IDE for RCP and RAP Developers + + eclipse-rcp = buildEclipse { + name = "eclipse-rcp-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for RCP and RAP Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-rcp-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "9DqNjSx1Ypdzpt1jIOJ9KFx8y+cG55K6bqkWTqnGjjDr4h4mWSzvGjHGUtFrKl92WRzQZKjNPxzVreDMcUkc/g=="; + }; + }; + + ### Eclipse IDE for Rust Developers + + eclipse-rust = buildEclipse { + name = "eclipse-rust-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for Rust Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-rust-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "QbaG1knCMFnVQkPeApcIamJMXPyL8zUQa0ZsTJOuTgU/fD1RiHN7/WS6ax5azzIJhpjEtj2LMU4XV+MwkzResw=="; + }; + }; + + ### Environments + + # Function that assembles a complete Eclipse environment from an + # Eclipse package and list of Eclipse plugins. + eclipseWithPlugins = { eclipse, plugins ? [], jvmArgs ? [] }: + let + # Gather up the desired plugins. + pluginEnv = buildEnv { + name = "eclipse-plugins"; + paths = + with lib; + filter (x: x ? isEclipsePlugin) (closePropagation plugins); + }; + + # Prepare the JVM arguments to add to the ini file. We here also + # add the property indicating the plugin directory. + dropinPropName = "org.eclipse.equinox.p2.reconciler.dropins.directory"; + dropinProp = "-D${dropinPropName}=${pluginEnv}/eclipse/dropins"; + jvmArgsText = lib.concatStringsSep "\n" (jvmArgs ++ [dropinProp]); + + # Base the derivation name on the name of the underlying + # Eclipse. + name = (lib.meta.appendToName "with-plugins" eclipse).name; + in + runCommand name { nativeBuildInputs = [ makeWrapper ]; } '' + mkdir -p $out/bin $out/etc + + # Prepare an eclipse.ini with the plugin directory. + cat ${eclipse}/eclipse/eclipse.ini - > $out/etc/eclipse.ini <<EOF + ${jvmArgsText} + EOF + + makeWrapper ${eclipse}/bin/eclipse $out/bin/eclipse \ + --add-flags "--launcher.ini $out/etc/eclipse.ini" + + ln -s ${eclipse}/share $out/ + ''; + + ### Plugins + + plugins = callPackage ./plugins.nix { }; + +} |