btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / se / servo / package.nix
blobaf6fb95d9585b04b53bdaaf507282253e4c14f25
2   lib,
3   stdenv,
4   rustPlatform,
5   fetchFromGitHub,
7   # build deps
8   cargo-deny,
9   cmake,
10   dbus,
11   gcc,
12   git,
13   gnumake,
14   libxkbcommon,
15   llvm,
16   llvmPackages,
17   m4,
18   makeWrapper,
19   perl,
20   pkg-config,
21   python3,
22   taplo,
23   vulkan-loader,
24   which,
25   yasm,
26   zlib,
28   # runtime deps
29   darwin,
30   fontconfig,
31   freetype,
32   gst_all_1,
33   libGL,
34   libunwind,
35   udev,
36   wayland,
37   xorg,
40 let
41   customPython = python3.withPackages (
42     ps: with ps; [
43       dbus
44       packaging
45       pip
46       six
47       virtualenv
48     ]
49   );
50   runtimePaths = lib.makeLibraryPath [
51     xorg.libXcursor
52     xorg.libXrandr
53     xorg.libXi
54     libxkbcommon
55     vulkan-loader
56     wayland
57     libGL
58   ];
61 rustPlatform.buildRustPackage {
62   pname = "servo";
63   version = "0-unstable-2024-09-09";
65   src = fetchFromGitHub {
66     owner = "servo";
67     repo = "servo";
68     rev = "938fd8c12fc2489303e12538d3e3585bd771141f";
69     hash = "sha256-CrpEBFYd8Qd0rxSnT81IvtxxEuYG0jWGJeHISvxalyY=";
70   };
72   # need to use a `Cargo.lock` as there are git dependencies
73   cargoLock = {
74     lockFile = ./Cargo.lock;
75     outputHashes = {
76       "derive_common-0.0.1" = "sha256-z0I2fQQlbUqaFU1EX45eYDy5IbZJ4SIget7WHzq4St0=";
77       "fontsan-0.5.2" = "sha256-4id66xxQ8iu0+OvJKH77WYPUE0eoVa9oUHmr6lRFPa8=";
78       "gilrs-0.10.6" = "sha256-RIfowFShWTPqgVWliK8Fc4cJw0YKITLvmexmTC0SwQk=";
79       "mozjs-0.14.1" = "sha256-RMM28Rd0r58VLfNEJzjWw3Ze6oKEi5lC1Edv03tJbfY=";
80       "peek-poke-0.3.0" = "sha256-WCZYX68vZrPhaAZwpx9/lUp3bVsLMwtmlJSW8wNb2ks=";
81       "servo-media-0.1.0" = "sha256-+J/6ZJPM9eus6YHJA6ENJD63CBiJTtKZdfORq9n6Nf8=";
82       "signpost-0.1.0" = "sha256-xRVXwW3Gynace9Yk5r1q7xA60yy6xhC5wLAyMJ6rPRs=";
83       "webxr-0.0.1" = "sha256-HZ8oWm5BaBLBXo4dS2CbWjpExry7dzeB2ddRLh7+98w=";
84       "naga-22.0.0" = "sha256-Xi2lWZCv4V2mUbQmwV1aw3pcvIIcyltKvv/C+LVqqDI=";
85       "raqote-0.8.5" = "sha256-WLsz5q08VNmYBxUhQ0hOn0K0RVFnnjaWF/MuQGkO/Rg=";
86     };
87   };
89   # Remap absolute path between modules to include SEMVER
90   # set `HOME` to a temp dir for write access
91   # Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
92   preConfigure = ''
93     sed -i -e 's/\/style\//\/style-0.0.1\//g' ../cargo-vendor-dir/servo_atoms-0.0.1/build.rs
94     export HOME=$TMPDIR
95     unset AS
96   '';
98   nativeBuildInputs = [
99     cargo-deny
100     cmake
101     customPython
102     dbus
103     gcc
104     git
105     gnumake
106     llvm
107     llvmPackages.libstdcxxClang
108     m4
109     makeWrapper
110     perl
111     pkg-config
112     python3
113     taplo
114     which
115     yasm
116     zlib
117   ];
119   buildInputs = [
120     fontconfig
121     freetype
122     gst_all_1.gstreamer
123     gst_all_1.gst-plugins-base
124     gst_all_1.gst-plugins-good
125     gst_all_1.gst-plugins-bad
126     gst_all_1.gst-plugins-ugly
127     libunwind
128     udev
129     wayland
130     libGL
131     xorg.libX11
132     xorg.libxcb
133   ] ++ (lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.AppKit ]);
135   # copy resources into `$out` to be used during runtime
136   # link runtime libraries
137   postFixup = ''
138     mkdir -p $out/resources
139     cp -r ./resources $out/
141     wrapProgram $out/bin/servo \
142       --prefix LD_LIBRARY_PATH : ${runtimePaths}
143   '';
145   LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib";
147   meta = {
148     description = "The embeddable, independent, memory-safe, modular, parallel web rendering engine";
149     homepage = "https://servo.org";
150     license = lib.licenses.mpl20;
151     maintainers = with lib.maintainers; [ supinie ];
152     mainProgram = "servo";
153     platforms = lib.platforms.linux ++ lib.platforms.darwin;
154   };