nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 179 lines 3.6 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 libxtst, 38 libxscrnsaver, 39 libxrender, 40 libxrandr, 41 libxi, 42 libxfixes, 43 libxext, 44 libxdamage, 45 libxcursor, 46 libxcomposite, 47 libx11, 48 libxshmfence, 49}: 50 51let 52 bits = if stdenv.hostPlatform.is64bit then "x64" else "ia32"; 53 54 nwEnv = buildEnv { 55 name = "nwjs-env"; 56 paths = [ 57 alsa-lib 58 at-spi2-core 59 atk 60 cairo 61 cups 62 dbus 63 expat 64 fontconfig 65 freetype 66 gdk-pixbuf 67 glib 68 gtk3 69 libcap 70 libdrm 71 libGL 72 libnotify 73 libxkbcommon 74 libgbm 75 nspr 76 nss 77 pango 78 libx11 79 libxscrnsaver 80 libxcomposite 81 libxcursor 82 libxdamage 83 libxext 84 libxfixes 85 libxi 86 libxrandr 87 libxrender 88 libxtst 89 libxshmfence 90 # libnw-specific (not chromium dependencies) 91 ffmpeg 92 libxcb 93 # chromium runtime deps (dlopen’d) 94 libuuid 95 sqlite 96 udev 97 ]; 98 99 extraOutputsToInstall = [ 100 "lib" 101 "out" 102 ]; 103 }; 104 105 version = "0.102.1"; 106in 107stdenv.mkDerivation { 108 pname = "nwjs"; 109 inherit version; 110 111 src = 112 let 113 flavor = if sdk then "sdk-" else ""; 114 in 115 fetchurl { 116 url = "https://dl.nwjs.io/v${version}/nwjs-${flavor}v${version}-linux-${bits}.tar.gz"; 117 # TODO: Write an update script to update all 4 hashes. 118 # nixpkgs-update: no auto update 119 hash = 120 { 121 "sdk-ia32" = "sha256-uzDbEq2vNC+fm95Co3lnQX7mrUXsIDWFoa0osWCn3EM="; 122 "sdk-x64" = "sha256-jWw5kXYGxu7oen8fK2Q58QPhiBRC6H2ibGXkeUFW2pI="; 123 "ia32" = "sha256-oODdSKNlOPSLD9vAqRwYcAgH6mumyOB5Fp6G9ifSgok="; 124 "x64" = "sha256-WhHV+xj2ngEz+i1ipBhwZD9b0EF/hdi8gMBZw5qYRGA="; 125 } 126 ."${flavor + bits}"; 127 }; 128 129 nativeBuildInputs = [ 130 autoPatchelfHook 131 # override doesn't preserve splicing https://github.com/NixOS/nixpkgs/issues/132651 132 # 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. 133 (buildPackages.wrapGAppsHook3.override { makeWrapper = buildPackages.makeShellWrapper; }) 134 ]; 135 136 buildInputs = [ nwEnv ]; 137 appendRunpaths = map (pkg: (lib.getLib pkg) + "/lib") [ 138 nwEnv 139 stdenv.cc.libc 140 stdenv.cc.cc 141 ]; 142 143 preFixup = '' 144 gappsWrapperArgs+=( 145 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" 146 ) 147 ''; 148 149 installPhase = '' 150 runHook preInstall 151 152 mkdir -p $out/share/nwjs 153 cp -R * $out/share/nwjs 154 find $out/share/nwjs 155 156 ln -s ${lib.getLib systemd}/lib/libudev.so $out/share/nwjs/libudev.so.0 157 158 mkdir -p $out/bin 159 ln -s $out/share/nwjs/nw $out/bin 160 161 mkdir $out/lib 162 ln -s $out/share/nwjs/lib/libnw.so $out/lib/libnw.so 163 164 runHook postInstall 165 ''; 166 167 meta = { 168 description = "App runtime based on Chromium and node.js"; 169 homepage = "https://nwjs.io/"; 170 platforms = [ 171 "i686-linux" 172 "x86_64-linux" 173 ]; 174 sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; 175 maintainers = [ lib.maintainers.mikaelfangel ]; 176 mainProgram = "nw"; 177 license = lib.licenses.mit; 178 }; 179}