diff options
Diffstat (limited to 'pkgs/applications/editors/idea/common.nix')
-rw-r--r-- | pkgs/applications/editors/idea/common.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pkgs/applications/editors/idea/common.nix b/pkgs/applications/editors/idea/common.nix new file mode 100644 index 000000000000..96689fa75ad6 --- /dev/null +++ b/pkgs/applications/editors/idea/common.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip +, coreutils, gnugrep, which, git, python, unzip, androidsdk }: + +{ name, product, version, build, src, meta, jdk } @ attrs: + +with stdenv.lib; + +let loName = toLower product; + hiName = toUpper product; + execName = concatStringsSep "-" (init (splitString "-" name)); +in + +with stdenv; lib.makeOverridable mkDerivation rec { + inherit name build src meta; + desktopItem = makeDesktopItem { + name = execName; + exec = execName; + comment = lib.replaceChars ["\n"] [" "] meta.longDescription; + desktopName = product; + genericName = meta.description; + categories = "Application;Development;"; + icon = execName; + }; + + buildInputs = [ makeWrapper patchelf p7zip unzip ]; + + patchPhase = '' + get_file_size() { + local fname="$1" + echo $(ls -l $fname | cut -d ' ' -f5) + } + + munge_size_hack() { + local fname="$1" + local size="$2" + strip $fname + truncate --size=$size $fname + } + + interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2) + if [ "${stdenv.system}" == "x86_64-linux" ]; then + target_size=$(get_file_size bin/fsnotifier64) + patchelf --set-interpreter "$interpreter" bin/fsnotifier64 + munge_size_hack bin/fsnotifier64 $target_size + else + target_size=$(get_file_size bin/fsnotifier) + patchelf --set-interpreter "$interpreter" bin/fsnotifier + munge_size_hack bin/fsnotifier $target_size + fi + ''; + + installPhase = '' + mkdir -p $out/{bin,$name,share/pixmaps,libexec/${name}} + cp -a . $out/$name + ln -s $out/$name/bin/${loName}.png $out/share/pixmaps/${execName}.png + mv bin/fsnotifier* $out/libexec/${name}/. + + jdk=${jdk.home} + item=${desktopItem} + + makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${execName}" \ + --prefix PATH : "$out/libexec/${name}:${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ + --set JDK_HOME "$jdk" \ + --set ${hiName}_JDK "$jdk" \ + --set ANDROID_JAVA_HOME "$jdk" \ + --set JAVA_HOME "$jdk" + + ln -s "$item/share/applications" $out/share + ''; + +} |