diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/nwjs/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/nwjs/default.nix | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/nwjs/default.nix b/nixpkgs/pkgs/development/tools/nwjs/default.nix new file mode 100644 index 000000000000..ab16d9511514 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/nwjs/default.nix @@ -0,0 +1,95 @@ +{ stdenv, fetchurl, buildEnv, makeWrapper + +, xorg, alsaLib, dbus, glib, gtk3, atk, pango, freetype, fontconfig +, gdk-pixbuf, cairo, nss, nspr, gconf, expat, systemd, libcap +, libnotify +, ffmpeg_3, libxcb, cups +, sqlite, udev +, libuuid +, sdk ? false +}: +let + bits = if stdenv.hostPlatform.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_3 libxcb + # chromium runtime deps (dlopen’d) + sqlite udev + libuuid + ]; + + extraOutputsToInstall = [ "lib" "out" ]; + }; + +in stdenv.mkDerivation rec { + pname = "nwjs"; + version = "0.33.4"; + + src = if sdk then fetchurl { + url = "https://dl.nwjs.io/v${version}/nwjs-sdk-v${version}-linux-${bits}.tar.gz"; + sha256 = if bits == "x64" then + "1hi6xispxvyb6krm5j11mv8509dwpw5ikpbkvq135gsk3gm29c9y" else + "00p4clbfinrj5gp2i84a263l3h00z8g7mnx61qwmr0z02kvswz9s"; + } else fetchurl { + url = "https://dl.nwjs.io/v${version}/nwjs-v${version}-linux-${bits}.tar.gz"; + sha256 = if bits == "x64" then + "09zd6gja3l20xx03h2gawpmh9f8nxqjp8qdkds5nz9kbbckhkj52" else + "0nlpdz76k1p1pq4xygfr2an91m0d7p5fjyg2xhiggyy8b7sp4964"; + }; + + 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 = "https://nwjs.io/"; + platforms = ["i686-linux" "x86_64-linux"]; + maintainers = [ maintainers.offline ]; + license = licenses.bsd3; + }; +} |