diff options
author | Profpatsch <mail@profpatsch.de> | 2017-08-03 02:30:42 +0200 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2018-03-19 08:47:08 +0100 |
commit | 5e0cf582c1337c53bd796fc952a1e7417e30754b (patch) | |
tree | d8b0bf2d245eca1a8c5179c38ecb773f2d7c8db6 /pkgs/development/tools/nwjs/default.nix | |
parent | 0f6286cc4b82ab2568ed53f99977b54c8e67fc56 (diff) | |
download | nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar.gz nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar.bz2 nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar.lz nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar.xz nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.tar.zst nixpkgs-5e0cf582c1337c53bd796fc952a1e7417e30754b.zip |
node_webkit/nwjs: 0.12 -> 0.23.6
Keep 0.12, because it is still needed by `nixui`. Keep 0.9, because it is still needed by `zed`.
Diffstat (limited to 'pkgs/development/tools/nwjs/default.nix')
-rw-r--r-- | pkgs/development/tools/nwjs/default.nix | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/development/tools/nwjs/default.nix b/pkgs/development/tools/nwjs/default.nix new file mode 100644 index 00000000000..6a2995b2bbe --- /dev/null +++ b/pkgs/development/tools/nwjs/default.nix @@ -0,0 +1,87 @@ +{ stdenv, fetchurl, buildEnv, makeWrapper + +, xorg, alsaLib, dbus, glib, gtk2, gtk3, atk, pango, freetype, fontconfig +, gdk_pixbuf, cairo, zlib, nss, nssTools, nspr, gconf, expat, systemd, libcap +, libnotify +, ffmpeg, libxcb, libXScrnSaver, cups +, sqlite, udev +}: +let + bits = if stdenv.system == "x86_64-linux" then "x64" + else "ia32"; + + nwEnv = buildEnv { + name = "nwjs-env"; + paths = [ + xorg.libX11 xorg.libXrender glib /*gtk2*/ gtk3 atk pango cairo gdk_pixbuf + freetype fontconfig xorg.libXcomposite alsaLib xorg.libXdamage + xorg.libXext xorg.libXfixes nss nspr gconf expat dbus + xorg.libXtst xorg.libXi xorg.libXcursor xorg.libXrandr + xorg.libXScrnSaver cups + libcap libnotify + # libnw-specific (not chromium dependencies) + ffmpeg libxcb + # chromium runtime deps (dlopen’d) + sqlite udev + ]; + + extraOutputsToInstall = [ "lib" "out" ]; + }; + +in stdenv.mkDerivation rec { + name = "nwjs-${version}"; + version = "0.23.6"; + + src = fetchurl { + url = "http://dl.nwjs.io/v${version}/nwjs-v${version}-linux-${bits}.tar.gz"; + sha256 = if bits == "x64" then + "0ppyjspdvacarhdn4xd5i1pqgmf4z1bxnh1cry780489h25rcjgj" else + "0c0j73vnzhsry5rdx41d954a29jmjnvzli728cfbjybfr51zdybg"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + # we have runtime deps like sqlite3 that should remain + dontPatchELF = true; + + installPhase = + let ccPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]; + in '' + mkdir -p $out/share/nwjs + cp -R * $out/share/nwjs + find $out/share/nwjs + + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/share/nwjs/nw + + ln -s ${systemd.lib}/lib/libudev.so $out/share/nwjs/libudev.so.0 + + libpath="$out/share/nwjs/lib/" + for f in "$libpath"/*.so; do + patchelf --set-rpath "${nwEnv}/lib:${ccPath}:$libpath" "$f" + done + patchelf --set-rpath "${nwEnv}/lib:${nwEnv}/lib64:${ccPath}:$libpath" $out/share/nwjs/nw + # check, whether all RPATHs are correct (all dependencies found) + checkfile=$(mktemp) + for f in "$libpath"/*.so "$out/share/nwjs/nw"; do + (echo "$f:"; + ldd "$f" ) > "$checkfile" + done + if <"$checkfile" grep -e "not found"; then + cat "$checkfile" + exit 1 + fi + + mkdir -p $out/bin + ln -s $out/share/nwjs/nw $out/bin + ''; + + buildInputs = [ makeWrapper ]; + + meta = with stdenv.lib; { + description = "An app runtime based on Chromium and node.js"; + homepage = http://nwjs.io/; + platforms = ["i686-linux" "x86_64-linux"]; + maintainers = [ maintainers.offline ]; + license = licenses.bsd3; + }; +} |