Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
5.5 kB · 265 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266{ lib, clangStdenv, buildPackages, runCommand, fetchurl, perl, python3, ruby, gi-docgen, bison, gperf, cmake, ninja, pkg-config, gettext, gobject-introspection, gnutls, libgcrypt, libgpg-error, gtk3, wayland, wayland-protocols, wayland-scanner, libwebp, enchant2, xorg, libxkbcommon, libavif, libepoxy, libjxl, at-spi2-core, cairo, libxml2, libsoup, libsecret, libxslt, harfbuzz, hyphen, icu, libsysprof-capture, libpthreadstubs, nettle, libtasn1, p11-kit, libidn, libedit, readline, libGL, libGLU, libgbm, libintl, lcms2, libmanette, geoclue2, flite, fontconfig, freetype, openssl, sqlite, gst-plugins-base, gst-plugins-bad, woff2, bubblewrap, libseccomp, libbacktrace, systemd, xdg-dbus-proxy, replaceVars, glib, unifdef, addDriverRunpath, enableGeoLocation ? true, enableExperimental ? false, withLibsecret ? true, systemdSupport ? lib.meta.availableOn clangStdenv.hostPlatform systemd, testers,}:
# https://webkitgtk.org/2024/10/04/webkitgtk-2.46.html recommends building with clang.clangStdenv.mkDerivation (finalAttrs: { pname = "webkitgtk"; version = "2.48.5"; name = "${finalAttrs.pname}-${finalAttrs.version}+abi=${ if lib.versionAtLeast gtk3.version "4.0" then "6.0" else "4.${if lib.versions.major libsoup.version == "2" then "0" else "1"}" }";
outputs = [ "out" "dev" "devdoc" ];
# https://github.com/NixOS/nixpkgs/issues/153528 # Can't be linked within a 4GB address space. separateDebugInfo = clangStdenv.hostPlatform.isLinux && !clangStdenv.hostPlatform.is32bit;
src = fetchurl { url = "https://webkitgtk.org/releases/webkitgtk-${finalAttrs.version}.tar.xz"; hash = "sha256-u2TtnRz9WOi16JzK1x3TGt/tVjNrrXaVAxrQtmjhmHw="; };
patches = lib.optionals clangStdenv.hostPlatform.isLinux [ (replaceVars ./fix-bubblewrap-paths.patch { inherit (builtins) storeDir; inherit (addDriverRunpath) driverLink; }) ];
nativeBuildInputs = [ bison cmake gettext gobject-introspection gperf ninja perl perl.pkgs.FileCopyRecursive # used by copy-user-interface-resources.pl pkg-config python3 ruby gi-docgen glib # for gdbus-codegen unifdef ] ++ lib.optionals clangStdenv.hostPlatform.isLinux [ wayland-scanner ];
buildInputs = [ at-spi2-core cairo # required even when using skia enchant2 flite libavif libepoxy libjxl gnutls gst-plugins-bad gst-plugins-base harfbuzz hyphen icu libGL libGLU libgbm libgcrypt libgpg-error libidn libintl lcms2 libpthreadstubs libsysprof-capture libtasn1 libwebp libxkbcommon libxml2 libxslt libbacktrace nettle p11-kit sqlite woff2 ] ++ lib.optionals clangStdenv.hostPlatform.isBigEndian [ # https://bugs.webkit.org/show_bug.cgi?id=274032 fontconfig freetype ] ++ lib.optionals clangStdenv.hostPlatform.isDarwin [ libedit readline ] ++ lib.optionals clangStdenv.hostPlatform.isLinux [ libseccomp libmanette wayland xorg.libX11 ] ++ lib.optionals systemdSupport [ systemd ] ++ lib.optionals enableGeoLocation [ geoclue2 ] ++ lib.optionals enableExperimental [ # For ENABLE_WEB_RTC openssl ] ++ lib.optionals withLibsecret [ libsecret ] ++ lib.optionals (lib.versionAtLeast gtk3.version "4.0") [ wayland-protocols ];
propagatedBuildInputs = [ gtk3 libsoup ];
cmakeFlags = let cmakeBool = x: if x then "ON" else "OFF"; in [ "-DENABLE_INTROSPECTION=ON" "-DPORT=GTK" "-DUSE_SOUP2=${cmakeBool (lib.versions.major libsoup.version == "2")}" "-DUSE_LIBSECRET=${cmakeBool withLibsecret}" "-DENABLE_EXPERIMENTAL_FEATURES=${cmakeBool enableExperimental}" ] ++ lib.optionals clangStdenv.hostPlatform.isLinux [ # Have to be explicitly specified when cross. # https://github.com/WebKit/WebKit/commit/a84036c6d1d66d723f217a4c29eee76f2039a353 "-DBWRAP_EXECUTABLE=${lib.getExe bubblewrap}" "-DDBUS_PROXY_EXECUTABLE=${lib.getExe xdg-dbus-proxy}" ] ++ lib.optionals clangStdenv.hostPlatform.isDarwin [ "-DENABLE_GAMEPAD=OFF" "-DENABLE_GTKDOC=OFF" "-DENABLE_MINIBROWSER=OFF" "-DENABLE_QUARTZ_TARGET=ON" "-DENABLE_X11_TARGET=OFF" "-DUSE_APPLE_ICU=OFF" "-DUSE_OPENGL_OR_ES=OFF" ] ++ lib.optionals (lib.versionOlder gtk3.version "4.0") [ "-DUSE_GTK4=OFF" ] ++ lib.optionals (!systemdSupport) [ "-DENABLE_JOURNALD_LOG=OFF" ];
postPatch = '' patchShebangs . '';
postFixup = '' # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back. moveToOutput "share/doc" "$devdoc" '';
requiredSystemFeatures = [ "big-parallel" ];
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = with lib; { description = "Web content rendering engine, GTK port"; mainProgram = "WebKitWebDriver"; homepage = "https://webkitgtk.org/"; license = licenses.bsd2; pkgConfigModules = [ "javascriptcoregtk-4.0" "webkit2gtk-4.0" "webkit2gtk-web-extension-4.0" ]; platforms = platforms.linux ++ platforms.darwin; teams = [ teams.gnome ]; broken = clangStdenv.hostPlatform.isDarwin; };})