forked from mirrors/nixpkgs
20a15e993b
It supports now insntalling some plugins (however the eclipse path will be copied once) You can still just copy the whole store path to you home directory to install additional plugins using update sites svn path=/nixpkgs/trunk/; revision=13121
97 lines
3.9 KiB
Nix
97 lines
3.9 KiB
Nix
args: with args; let
|
|
|
|
# hint: eclipse -data <dir to save global eclipse settings>
|
|
|
|
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; });
|
|
}
|