at 23.11-beta 98 lines 3.1 kB view raw
1{ stdenv, lib, fetchurl, buildEnv, makeWrapper 2 3, xorg, alsa-lib, at-spi2-core, dbus, glib, gtk3, atk, pango, freetype 4, fontconfig , gdk-pixbuf, cairo, mesa, nss, nspr, expat, systemd 5, libcap, libdrm, libxkbcommon 6, libnotify 7, ffmpeg, libxcb, cups 8, sqlite, udev 9, libuuid 10, sdk ? false 11}: 12let 13 bits = if stdenv.hostPlatform.system == "x86_64-linux" then "x64" 14 else "ia32"; 15 16 nwEnv = buildEnv { 17 name = "nwjs-env"; 18 paths = [ 19 xorg.libX11 xorg.libXrender glib gtk3 atk at-spi2-core pango cairo gdk-pixbuf 20 freetype fontconfig xorg.libXcomposite alsa-lib xorg.libXdamage 21 xorg.libXext xorg.libXfixes mesa nss nspr expat dbus 22 xorg.libXtst xorg.libXi xorg.libXcursor xorg.libXrandr 23 xorg.libXScrnSaver xorg.libxshmfence cups 24 libcap libdrm libnotify 25 libxkbcommon 26 # libnw-specific (not chromium dependencies) 27 ffmpeg libxcb 28 # chromium runtime deps (dlopen’d) 29 sqlite udev 30 libuuid 31 ]; 32 33 extraOutputsToInstall = [ "lib" "out" ]; 34 }; 35 36in stdenv.mkDerivation rec { 37 pname = "nwjs"; 38 version = "0.54.1"; 39 40 src = if sdk then fetchurl { 41 url = "https://dl.nwjs.io/v${version}/nwjs-sdk-v${version}-linux-${bits}.tar.gz"; 42 sha256 = if bits == "x64" then 43 "sha256-1qeU4+EIki0M7yJPkRuzFwMdswfDOni5gltdmM6A/ds=" else 44 "sha256-wDEGePE9lrKa6OAzeiDLhVj992c0TJgiMHb8lJ4PF80="; 45 } else fetchurl { 46 url = "https://dl.nwjs.io/v${version}/nwjs-v${version}-linux-${bits}.tar.gz"; 47 sha256 = if bits == "x64" then 48 "sha256-TACEM06K2t6dDXRD44lSW7GRi77yzSW4BZJw8gT+fl4=" else 49 "sha256-yX9knqFV5VQTT3TJDmQoDgt17NqH8fLt+bLQAqKleTU="; 50 }; 51 52 # we have runtime deps like sqlite3 that should remain 53 dontPatchELF = true; 54 55 installPhase = 56 let ccPath = lib.makeLibraryPath [ stdenv.cc.cc ]; 57 in '' 58 mkdir -p $out/share/nwjs 59 cp -R * $out/share/nwjs 60 find $out/share/nwjs 61 62 patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/share/nwjs/nw 63 64 ln -s ${lib.getLib systemd}/lib/libudev.so $out/share/nwjs/libudev.so.0 65 66 libpath="$out/share/nwjs/lib/" 67 for f in "$libpath"/*.so; do 68 patchelf --set-rpath "${nwEnv}/lib:${ccPath}:$libpath" "$f" 69 done 70 patchelf --set-rpath "${nwEnv}/lib:${nwEnv}/lib64:${ccPath}:$libpath" $out/share/nwjs/nw 71 # check, whether all RPATHs are correct (all dependencies found) 72 checkfile=$(mktemp) 73 for f in "$libpath"/*.so "$out/share/nwjs/nw"; do 74 (echo "$f:"; 75 ldd "$f" ) > "$checkfile" 76 done 77 if <"$checkfile" grep -e "not found"; then 78 cat "$checkfile" 79 exit 1 80 fi 81 82 mkdir -p $out/bin 83 ln -s $out/share/nwjs/nw $out/bin 84 85 mkdir $out/lib 86 ln -s $out/share/nwjs/lib/libnw.so $out/lib/libnw.so 87 ''; 88 89 nativeBuildInputs = [ makeWrapper ]; 90 91 meta = with lib; { 92 description = "An app runtime based on Chromium and node.js"; 93 homepage = "https://nwjs.io/"; 94 platforms = ["i686-linux" "x86_64-linux"]; 95 maintainers = [ maintainers.offline ]; 96 license = licenses.bsd3; 97 }; 98}