diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 9f8f6f5fd0c..5cad049ba32 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -1,20 +1,6 @@ -{ stdenv, fetchurl, lib, makeDesktopItem, makeWrapper, zlib, glib, alsaLib -, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf -, gvfs, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap, systemd -}: +{ stdenv, fetchurl, lib, makeWrapper, gvfs, atomEnv }: -let - atomPkgs = [ - stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3 - fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss - xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst - xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr - xorg.libXcursor libcap systemd - ]; - atomLib = lib.makeLibraryPath atomPkgs; - atomLib64 = lib.makeSearchPathOutputs "lib64" ["lib"] atomPkgs; - -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "atom-${version}"; version = "1.6.2"; @@ -26,25 +12,23 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; - phases = [ "installPhase" "fixupPhase" ]; - - installPhase = '' - mkdir -p $out + buildCommand = '' + mkdir -p $out/usr/ ar p $src data.tar.gz | tar -C $out -xz ./usr substituteInPlace $out/usr/share/applications/atom.desktop \ --replace /usr/share/atom $out/bin mv $out/usr/* $out/ rm -r $out/share/lintian rm -r $out/usr/ + wrapProgram $out/bin/atom \ + --prefix "PATH" : "${gvfs}/bin" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/share/atom" \ $out/share/atom/atom patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}" \ $out/share/atom/resources/app/apm/bin/node - wrapProgram $out/bin/atom \ - --prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}" \ - --prefix "PATH" : "${gvfs}/bin" - wrapProgram $out/bin/apm \ - --prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}" ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/editors/atom/env.nix b/pkgs/applications/editors/atom/env.nix new file mode 100644 index 00000000000..d91d8a4ecbe --- /dev/null +++ b/pkgs/applications/editors/atom/env.nix @@ -0,0 +1,19 @@ +{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk, atk, pango, freetype, fontconfig +, libgnome_keyring3, gdk_pixbuf, gvfs, cairo, cups, expat, libgpgerror, nspr +, gconf, nss, xorg, libcap, systemd, libnotify +}: + +let + packages = [ + stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3 + fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss + xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst + xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr + xorg.libXcursor libcap systemd libnotify + ]; + + libPathNative = lib.makeLibraryPath packages; + libPath64 = lib.makeSearchPathOutputs "lib64" ["lib"] packages; + libPath = "${libPathNative}:${libPath64}"; + +in { inherit packages libPath; } diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix index 0d9572ebc22..134dc397e06 100644 --- a/pkgs/applications/editors/vscode/default.nix +++ b/pkgs/applications/editors/vscode/default.nix @@ -1,22 +1,18 @@ -{ stdenv, callPackage, fetchurl, unzip -, ... -} @ args: +{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv, makeDesktopItem }: let - atomEnv = callPackage ../../../development/tools/electron/env-atom.nix (args); + version = "1.0.0"; + rev = "fa6d0f03813dfb9df4589c30121e9fcffa8a8ec8"; - version = "0.10.10"; - rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135"; - sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby" - else if stdenv.system == "x86_64-linux" then "1zjb6mys5qs9mb21rpgpnbgq4gpnw6gsgfn5imf7ca7myk1bxnvk" - else if stdenv.system == "x86_64-darwin" then "0y1as2s6nhicyvdfszphhqp76iv9wcygglrl2f0jamm98g9qp66p" + sha256 = if stdenv.system == "i686-linux" then "1nnsvr51k8cmq8rccksylam4ww40pdn9dnhnp9096z5ccrf4qa1b" + else if stdenv.system == "x86_64-linux" then "0p408pp2il6kawfsql8n5dvl75kmf2n2p0r266mjnww6vprmq4gw" + else if stdenv.system == "x86_64-darwin" then "06k41ljfvgyxbl364jlkdjk8lkwr6bpq2r051vin93cnqfxridkq" else throw "Unsupported system: ${stdenv.system}"; urlMod = if stdenv.system == "i686-linux" then "linux-ia32" else if stdenv.system == "x86_64-linux" then "linux-x64" else if stdenv.system == "x86_64-darwin" then "darwin" else throw "Unsupported system: ${stdenv.system}"; - in stdenv.mkDerivation rec { name = "vscode-${version}"; @@ -27,24 +23,35 @@ in inherit sha256; }; + desktopItem = makeDesktopItem { + name = "code"; + exec = "code"; + icon = "code"; + comment = "Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications"; + desktopName = "Visual Studio Code"; + genericName = "Text Editor"; + categories = "GNOME;GTK;Utility;TextEditor;Development;"; + }; + buildInputs = [ unzip ]; installPhase = '' - mkdir -p $out/bin - cp -r ./* $out/bin + mkdir -p $out/lib/vscode $out/bin + cp -r ./* $out/lib/vscode + ln -s $out/lib/vscode/code $out/bin - ${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then '' - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - $out/bin/code - '' else ""} + mkdir -p $out/share/applications + cp $desktopItem/share/applications/* $out/share/applications + + mkdir -p $out/share/pixmaps + cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png ''; - postFixup = '' - ${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then '' - patchelf \ - --set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/code)" \ - $out/bin/code - '' else ""} + fixupPhase = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/lib/vscode" \ + $out/lib/vscode/code ''; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix index d7d338f7f60..74adbb3f153 100644 --- a/pkgs/development/tools/electron/default.nix +++ b/pkgs/development/tools/electron/default.nix @@ -1,10 +1,6 @@ -{ stdenv, callPackage, fetchurl, unzip -, ... -} @ args: +{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv }: -let - atomEnv = callPackage ./env-atom.nix (args); -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "electron-${version}"; version = "0.36.2"; @@ -14,23 +10,17 @@ in stdenv.mkDerivation rec { name = "${name}.zip"; }; - buildInputs = [ atomEnv unzip ]; + buildInputs = [ unzip ]; - phases = [ "installPhase" "fixupPhase" ]; + buildCommand = '' + mkdir -p $out/lib/electron $out/bin + unzip -d $out/lib/electron $src + ln -s $out/lib/electron/electron $out/bin - unpackCmd = "unzip"; - - installPhase = '' - mkdir -p $out/bin - unzip -d $out/bin $src - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - $out/bin/electron - ''; - - postFixup = '' patchelf \ - --set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/electron)" \ - $out/bin/electron + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/lib/electron" \ + $out/lib/electron/electron ''; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/electron/env-atom.nix b/pkgs/development/tools/electron/env-atom.nix deleted file mode 100644 index 6c69b2e52cc..00000000000 --- a/pkgs/development/tools/electron/env-atom.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ stdenv, buildEnv, zlib, glib, alsaLib -, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf -, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap -, systemd, libnotify -, ... -}: - -buildEnv { - name = "env-atom"; - paths = [ - stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3 - fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss - xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst - xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr - xorg.libXcursor libcap systemd libnotify - ]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b8a73642055..bba0883c923 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5700,10 +5700,7 @@ in astyle = callPackage ../development/tools/misc/astyle { }; - electron = callPackage ../development/tools/electron { - gconf = pkgs.gnome.GConf; - }; - + electron = callPackage ../development/tools/electron { }; autobuild = callPackage ../development/tools/misc/autobuild { }; @@ -11647,10 +11644,12 @@ in artha = callPackage ../applications/misc/artha { }; - atom = callPackage ../applications/editors/atom { + atomEnv = callPackage ../applications/editors/atom/env.nix { gconf = gnome.GConf; }; + atom = callPackage ../applications/editors/atom { }; + aseprite = callPackage ../applications/editors/aseprite { giflib = giflib_4_1; }; @@ -14253,9 +14252,7 @@ in vorbis-tools = callPackage ../applications/audio/vorbis-tools { }; - vscode = callPackage ../applications/editors/vscode { - gconf = pkgs.gnome.GConf; - }; + vscode = callPackage ../applications/editors/vscode { }; vue = callPackage ../applications/misc/vue { };