Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 149 lines 3.0 kB view raw
1{ alsa-lib 2, at-spi2-core 3, atk 4, autoPatchelfHook 5, buildEnv 6, cairo 7, cups 8, dbus 9, expat 10, fetchurl 11, ffmpeg 12, fontconfig 13, freetype 14, gdk-pixbuf 15, glib 16, gtk3 17, lib 18, libcap 19, libdrm 20, libGL 21, libnotify 22, libuuid 23, libxcb 24, libxkbcommon 25, makeWrapper 26, mesa 27, nspr 28, nss 29, pango 30, sdk ? false 31, sqlite 32, stdenv 33, systemd 34, udev 35, wrapGAppsHook3 36, xorg 37}: 38 39let 40 bits = if stdenv.hostPlatform.system == "x86_64-linux" then "x64" else "ia32"; 41 42 nwEnv = buildEnv { 43 name = "nwjs-env"; 44 paths = [ 45 alsa-lib 46 at-spi2-core 47 atk 48 cairo 49 cups 50 dbus 51 expat 52 fontconfig 53 freetype 54 gdk-pixbuf 55 glib 56 gtk3 57 libcap 58 libdrm 59 libGL 60 libnotify 61 libxkbcommon 62 mesa 63 nspr 64 nss 65 pango 66 xorg.libX11 67 xorg.libXScrnSaver 68 xorg.libXcomposite 69 xorg.libXcursor 70 xorg.libXdamage 71 xorg.libXext 72 xorg.libXfixes 73 xorg.libXi 74 xorg.libXrandr 75 xorg.libXrender 76 xorg.libXtst 77 xorg.libxshmfence 78 # libnw-specific (not chromium dependencies) 79 ffmpeg 80 libxcb 81 # chromium runtime deps (dlopen’d) 82 libuuid 83 sqlite 84 udev 85 ]; 86 87 extraOutputsToInstall = [ "lib" "out" ]; 88 }; 89 90 version = "0.89.0"; 91in 92stdenv.mkDerivation { 93 pname = "nwjs"; 94 inherit version; 95 96 src = 97 let flavor = if sdk then "sdk-" else ""; 98 in fetchurl { 99 url = "https://dl.nwjs.io/v${version}/nwjs-${flavor}v${version}-linux-${bits}.tar.gz"; 100 hash = { 101 "sdk-ia32" = "sha256-gHZLxZRborfbwmblKQrgr6tf+Rwt1YqxrGELAHPM0so="; 102 "sdk-x64" = "sha256-NOQGS3jEdZumTwCmi0DUtnGlOaSAZi2rGYSLVioJDdg="; 103 "ia32" = "sha256-L3PGK2YZCUo+KfkakL9AjkPcnUWPFOn4S2GePi+rph0="; 104 "x64" = "sha256-epsbDjrpq4K7NnNDAcKoEJMcjfdehU2JjFcmA5exug8="; 105 }."${flavor + bits}"; 106 }; 107 108 nativeBuildInputs = [ 109 autoPatchelfHook 110 (wrapGAppsHook3.override { inherit makeWrapper; }) 111 ]; 112 113 buildInputs = [ nwEnv ]; 114 appendRunpaths = map (pkg: (lib.getLib pkg) + "/lib") [ nwEnv stdenv.cc.libc stdenv.cc.cc ]; 115 116 preFixup = '' 117 gappsWrapperArgs+=( 118 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" 119 ) 120 ''; 121 122 installPhase = '' 123 runHook preInstall 124 125 mkdir -p $out/share/nwjs 126 cp -R * $out/share/nwjs 127 find $out/share/nwjs 128 129 ln -s ${lib.getLib systemd}/lib/libudev.so $out/share/nwjs/libudev.so.0 130 131 mkdir -p $out/bin 132 ln -s $out/share/nwjs/nw $out/bin 133 134 mkdir $out/lib 135 ln -s $out/share/nwjs/lib/libnw.so $out/lib/libnw.so 136 137 runHook postInstall 138 ''; 139 140 meta = with lib; { 141 description = "App runtime based on Chromium and node.js"; 142 homepage = "https://nwjs.io/"; 143 platforms = [ "i686-linux" "x86_64-linux" ]; 144 sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 145 maintainers = [ maintainers.mikaelfangel ]; 146 mainProgram = "nw"; 147 license = licenses.bsd3; 148 }; 149}