nixpkgs/pkgs/by-name/se/servo/package.nix
2024-09-20 09:58:27 +02:00

156 lines
3.5 KiB
Nix

{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
# build deps
cargo-deny,
cmake,
dbus,
gcc,
git,
gnumake,
libxkbcommon,
llvm,
llvmPackages,
m4,
makeWrapper,
perl,
pkg-config,
python3,
taplo,
vulkan-loader,
which,
yasm,
zlib,
# runtime deps
darwin,
fontconfig,
freetype,
gst_all_1,
libGL,
libunwind,
udev,
wayland,
xorg,
}:
let
customPython = python3.withPackages (
ps: with ps; [
dbus
packaging
pip
six
virtualenv
]
);
runtimePaths = lib.makeLibraryPath [
xorg.libXcursor
xorg.libXrandr
xorg.libXi
libxkbcommon
vulkan-loader
wayland
libGL
];
in
rustPlatform.buildRustPackage {
pname = "servo";
version = "0-unstable-2024-09-09";
src = fetchFromGitHub {
owner = "servo";
repo = "servo";
rev = "938fd8c12fc2489303e12538d3e3585bd771141f";
hash = "sha256-CrpEBFYd8Qd0rxSnT81IvtxxEuYG0jWGJeHISvxalyY=";
};
# need to use a `Cargo.lock` as there are git dependencies
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"derive_common-0.0.1" = "sha256-z0I2fQQlbUqaFU1EX45eYDy5IbZJ4SIget7WHzq4St0=";
"fontsan-0.5.2" = "sha256-4id66xxQ8iu0+OvJKH77WYPUE0eoVa9oUHmr6lRFPa8=";
"gilrs-0.10.6" = "sha256-RIfowFShWTPqgVWliK8Fc4cJw0YKITLvmexmTC0SwQk=";
"mozjs-0.14.1" = "sha256-RMM28Rd0r58VLfNEJzjWw3Ze6oKEi5lC1Edv03tJbfY=";
"peek-poke-0.3.0" = "sha256-WCZYX68vZrPhaAZwpx9/lUp3bVsLMwtmlJSW8wNb2ks=";
"servo-media-0.1.0" = "sha256-+J/6ZJPM9eus6YHJA6ENJD63CBiJTtKZdfORq9n6Nf8=";
"signpost-0.1.0" = "sha256-xRVXwW3Gynace9Yk5r1q7xA60yy6xhC5wLAyMJ6rPRs=";
"webxr-0.0.1" = "sha256-HZ8oWm5BaBLBXo4dS2CbWjpExry7dzeB2ddRLh7+98w=";
"naga-22.0.0" = "sha256-Xi2lWZCv4V2mUbQmwV1aw3pcvIIcyltKvv/C+LVqqDI=";
"raqote-0.8.5" = "sha256-WLsz5q08VNmYBxUhQ0hOn0K0RVFnnjaWF/MuQGkO/Rg=";
};
};
# Remap absolute path between modules to include SEMVER
# set `HOME` to a temp dir for write access
# Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
preConfigure = ''
sed -i -e 's/\/style\//\/style-0.0.1\//g' ../cargo-vendor-dir/servo_atoms-0.0.1/build.rs
export HOME=$TMPDIR
unset AS
'';
nativeBuildInputs = [
cargo-deny
cmake
customPython
dbus
gcc
git
gnumake
llvm
llvmPackages.libstdcxxClang
m4
makeWrapper
perl
pkg-config
python3
taplo
which
yasm
zlib
];
buildInputs = [
fontconfig
freetype
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
libunwind
udev
wayland
libGL
xorg.libX11
xorg.libxcb
] ++ (lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.AppKit ]);
# copy resources into `$out` to be used during runtime
# link runtime libraries
postFixup = ''
mkdir -p $out/resources
cp -r ./resources $out/
wrapProgram $out/bin/servo \
--prefix LD_LIBRARY_PATH : ${runtimePaths}
'';
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
meta = {
description = "The embeddable, independent, memory-safe, modular, parallel web rendering engine";
homepage = "https://servo.org";
license = lib.licenses.mpl20;
maintainers = with lib.maintainers; [ supinie ];
mainProgram = "servo";
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}