Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at haskell-updates 168 lines 3.5 kB view raw
1{ 2 alsa-lib, 3 at-spi2-core, 4 atk, 5 autoPatchelfHook, 6 buildEnv, 7 buildPackages, 8 cairo, 9 cups, 10 dbus, 11 expat, 12 fetchurl, 13 ffmpeg, 14 fontconfig, 15 freetype, 16 gdk-pixbuf, 17 glib, 18 gtk3, 19 lib, 20 libcap, 21 libdrm, 22 libGL, 23 libnotify, 24 libuuid, 25 libxcb, 26 libxkbcommon, 27 makeWrapper, 28 libgbm, 29 nspr, 30 nss, 31 pango, 32 sdk ? false, 33 sqlite, 34 stdenv, 35 systemd, 36 udev, 37 xorg, 38}: 39 40let 41 bits = if stdenv.hostPlatform.is64bit then "x64" else "ia32"; 42 43 nwEnv = buildEnv { 44 name = "nwjs-env"; 45 paths = [ 46 alsa-lib 47 at-spi2-core 48 atk 49 cairo 50 cups 51 dbus 52 expat 53 fontconfig 54 freetype 55 gdk-pixbuf 56 glib 57 gtk3 58 libcap 59 libdrm 60 libGL 61 libnotify 62 libxkbcommon 63 libgbm 64 nspr 65 nss 66 pango 67 xorg.libX11 68 xorg.libXScrnSaver 69 xorg.libXcomposite 70 xorg.libXcursor 71 xorg.libXdamage 72 xorg.libXext 73 xorg.libXfixes 74 xorg.libXi 75 xorg.libXrandr 76 xorg.libXrender 77 xorg.libXtst 78 xorg.libxshmfence 79 # libnw-specific (not chromium dependencies) 80 ffmpeg 81 libxcb 82 # chromium runtime deps (dlopen’d) 83 libuuid 84 sqlite 85 udev 86 ]; 87 88 extraOutputsToInstall = [ 89 "lib" 90 "out" 91 ]; 92 }; 93 94 version = "0.102.1"; 95in 96stdenv.mkDerivation { 97 pname = "nwjs"; 98 inherit version; 99 100 src = 101 let 102 flavor = if sdk then "sdk-" else ""; 103 in 104 fetchurl { 105 url = "https://dl.nwjs.io/v${version}/nwjs-${flavor}v${version}-linux-${bits}.tar.gz"; 106 # TODO: Write an update script to update all 4 hashes. 107 # nixpkgs-update: no auto update 108 hash = 109 { 110 "sdk-ia32" = "sha256-uzDbEq2vNC+fm95Co3lnQX7mrUXsIDWFoa0osWCn3EM="; 111 "sdk-x64" = "sha256-jWw5kXYGxu7oen8fK2Q58QPhiBRC6H2ibGXkeUFW2pI="; 112 "ia32" = "sha256-oODdSKNlOPSLD9vAqRwYcAgH6mumyOB5Fp6G9ifSgok="; 113 "x64" = "sha256-WhHV+xj2ngEz+i1ipBhwZD9b0EF/hdi8gMBZw5qYRGA="; 114 } 115 ."${flavor + bits}"; 116 }; 117 118 nativeBuildInputs = [ 119 autoPatchelfHook 120 # override doesn't preserve splicing https://github.com/NixOS/nixpkgs/issues/132651 121 # Has to use `makeShellWrapper` from `buildPackages` even though `makeShellWrapper` from the inputs is spliced because `propagatedBuildInputs` would pick the wrong one because of a different offset. 122 (buildPackages.wrapGAppsHook3.override { makeWrapper = buildPackages.makeShellWrapper; }) 123 ]; 124 125 buildInputs = [ nwEnv ]; 126 appendRunpaths = map (pkg: (lib.getLib pkg) + "/lib") [ 127 nwEnv 128 stdenv.cc.libc 129 stdenv.cc.cc 130 ]; 131 132 preFixup = '' 133 gappsWrapperArgs+=( 134 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" 135 ) 136 ''; 137 138 installPhase = '' 139 runHook preInstall 140 141 mkdir -p $out/share/nwjs 142 cp -R * $out/share/nwjs 143 find $out/share/nwjs 144 145 ln -s ${lib.getLib systemd}/lib/libudev.so $out/share/nwjs/libudev.so.0 146 147 mkdir -p $out/bin 148 ln -s $out/share/nwjs/nw $out/bin 149 150 mkdir $out/lib 151 ln -s $out/share/nwjs/lib/libnw.so $out/lib/libnw.so 152 153 runHook postInstall 154 ''; 155 156 meta = { 157 description = "App runtime based on Chromium and node.js"; 158 homepage = "https://nwjs.io/"; 159 platforms = [ 160 "i686-linux" 161 "x86_64-linux" 162 ]; 163 sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; 164 maintainers = [ lib.maintainers.mikaelfangel ]; 165 mainProgram = "nw"; 166 license = lib.licenses.mit; 167 }; 168}