1{ 2 lib, 3 stdenv, 4 alsa-lib, 5 atk, 6 autoconf, 7 automake, 8 cairo, 9 capnproto, 10 clang, 11 cmake, 12 curl, 13 dbus, 14 dbus-glib, 15 fontconfig, 16 foundationdb, 17 freetype, 18 gdk-pixbuf, 19 glib, 20 gmp, 21 gobject-introspection, 22 graphene, 23 gtk3, 24 gtk4, 25 libevdev, 26 libgit2, 27 libsodium, 28 libsoup_3, 29 libssh2, 30 libtool, 31 linux-pam, 32 llvmPackages, 33 nettle, 34 openssl, 35 pango, 36 pkg-config, 37 libpq, 38 protobuf, 39 python3, 40 rdkafka, 41 seatd, # =libseat 42 sqlite, 43 udev, 44 webkitgtk_4_1, 45 zlib, 46 buildPackages, 47 ... 48}: 49 50{ 51 alsa-sys = attrs: { 52 nativeBuildInputs = [ pkg-config ]; 53 buildInputs = [ alsa-lib ]; 54 }; 55 56 cairo-rs = attrs: { 57 buildInputs = [ cairo ]; 58 }; 59 60 cairo-sys-rs = attrs: { 61 nativeBuildInputs = [ pkg-config ]; 62 buildInputs = [ cairo ]; 63 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 64 }; 65 66 capnp-rpc = attrs: { 67 nativeBuildInputs = [ capnproto ]; 68 }; 69 70 cargo = attrs: { 71 buildInputs = [ 72 openssl 73 zlib 74 curl 75 ]; 76 }; 77 78 libz-sys = attrs: { 79 nativeBuildInputs = [ pkg-config ]; 80 buildInputs = [ zlib ]; 81 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 82 }; 83 84 curl-sys = attrs: { 85 nativeBuildInputs = [ pkg-config ]; 86 buildInputs = [ 87 zlib 88 curl 89 ]; 90 propagatedBuildInputs = [ 91 curl 92 zlib 93 ]; 94 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 95 }; 96 97 dbus = attrs: { 98 nativeBuildInputs = [ pkg-config ]; 99 buildInputs = [ dbus ]; 100 }; 101 102 evdev-sys = attrs: { 103 nativeBuildInputs = [ 104 pkg-config 105 ] 106 ++ lib.optionals (stdenv.buildPlatform.config != stdenv.hostPlatform.config) [ 107 python3 108 autoconf 109 automake 110 libtool 111 ]; 112 buildInputs = [ libevdev ]; 113 114 # This prevents libevdev's build.rs from trying to `git fetch` when HOST!=TARGET 115 prePatch = '' 116 touch libevdev/.git 117 ''; 118 }; 119 120 expat-sys = attrs: { 121 nativeBuildInputs = [ cmake ]; 122 }; 123 124 foundationdb-sys = attrs: { 125 buildInputs = [ foundationdb ]; 126 # needed for 0.4+ release, when the FFI bindings are auto-generated 127 # 128 # patchPhase = '' 129 # substituteInPlace ./foundationdb-sys/build.rs \ 130 # --replace /usr/local/include ${foundationdb.dev}/include 131 # ''; 132 }; 133 134 foundationdb = attrs: { 135 buildInputs = [ foundationdb ]; 136 }; 137 138 freetype-sys = attrs: { 139 nativeBuildInputs = [ cmake ]; 140 buildInputs = [ freetype ]; 141 }; 142 143 glib-sys = attrs: { 144 nativeBuildInputs = [ pkg-config ]; 145 buildInputs = [ glib ]; 146 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 147 }; 148 149 gobject-sys = attrs: { 150 nativeBuildInputs = [ pkg-config ]; 151 buildInputs = [ dbus-glib ]; 152 }; 153 154 gio-sys = attrs: { 155 nativeBuildInputs = [ pkg-config ]; 156 buildInputs = [ dbus-glib ]; 157 }; 158 159 gdk-pixbuf = attrs: { 160 buildInputs = [ 161 dbus-glib 162 gdk-pixbuf 163 ]; 164 }; 165 166 gdk-pixbuf-sys = attrs: { 167 nativeBuildInputs = [ pkg-config ]; 168 buildInputs = [ gdk-pixbuf ]; 169 }; 170 171 gdk-sys = attrs: { 172 nativeBuildInputs = [ pkg-config ]; 173 buildInputs = [ gtk3 ]; # libgdk-3 174 }; 175 176 gdkx11-sys = attrs: { 177 nativeBuildInputs = [ pkg-config ]; 178 buildInputs = [ gtk3 ]; 179 }; 180 181 gtk-sys = attrs: { 182 buildInputs = [ gtk3 ]; 183 nativeBuildInputs = [ pkg-config ]; 184 }; 185 186 gtk4-sys = attrs: { 187 buildInputs = [ gtk4 ]; 188 nativeBuildInputs = [ pkg-config ]; 189 }; 190 191 gdk4-sys = attrs: { 192 buildInputs = [ gtk4 ]; 193 nativeBuildInputs = [ pkg-config ]; 194 }; 195 196 gsk4-sys = attrs: { 197 buildInputs = [ gtk4 ]; 198 nativeBuildInputs = [ pkg-config ]; 199 }; 200 201 libgit2-sys = attrs: { 202 LIBGIT2_SYS_USE_PKG_CONFIG = true; 203 nativeBuildInputs = [ pkg-config ]; 204 buildInputs = [ 205 openssl 206 zlib 207 libgit2 208 ]; 209 }; 210 211 libseat-sys = attrs: { 212 nativeBuildInputs = [ pkg-config ]; 213 buildInputs = [ seatd ]; 214 }; 215 216 libsqlite3-sys = attrs: { 217 nativeBuildInputs = [ pkg-config ]; 218 buildInputs = [ sqlite ]; 219 }; 220 221 libssh2-sys = attrs: { 222 nativeBuildInputs = [ pkg-config ]; 223 buildInputs = [ 224 openssl 225 zlib 226 libssh2 227 ]; 228 }; 229 230 libdbus-sys = attrs: { 231 nativeBuildInputs = [ pkg-config ]; 232 buildInputs = [ dbus ]; 233 }; 234 235 libudev-sys = attrs: { 236 nativeBuildInputs = [ pkg-config ]; 237 buildInputs = [ udev ]; 238 }; 239 240 graphene-sys = attrs: { 241 nativeBuildInputs = [ 242 pkg-config 243 gobject-introspection 244 ]; 245 buildInputs = [ graphene ]; 246 }; 247 248 javascriptcore-rs-sys = attrs: { 249 nativeBuildInputs = [ pkg-config ]; 250 buildInputs = [ webkitgtk_4_1 ]; 251 }; 252 253 nettle-sys = attrs: { 254 nativeBuildInputs = [ pkg-config ]; 255 buildInputs = [ 256 nettle 257 clang 258 ]; 259 LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib"; 260 }; 261 262 openssl = attrs: { 263 buildInputs = [ openssl ]; 264 }; 265 266 openssl-sys = attrs: { 267 nativeBuildInputs = [ pkg-config ]; 268 buildInputs = [ openssl ]; 269 }; 270 271 opentelemetry-proto = attrs: { 272 nativeBuildInputs = [ protobuf ]; 273 }; 274 275 pam-sys = attr: { 276 buildInputs = [ linux-pam ]; 277 }; 278 279 pango-sys = attr: { 280 nativeBuildInputs = [ pkg-config ]; 281 buildInputs = [ pango ]; 282 }; 283 284 pq-sys = attr: { 285 nativeBuildInputs = [ pkg-config ]; 286 buildInputs = [ libpq ]; 287 }; 288 289 prost-build = attr: { 290 nativeBuildInputs = [ protobuf ]; 291 }; 292 293 prost-wkt-types = attr: { 294 nativeBuildInputs = [ protobuf ]; 295 }; 296 297 rdkafka-sys = attr: { 298 nativeBuildInputs = [ pkg-config ]; 299 buildInputs = [ rdkafka ]; 300 }; 301 302 rink = attrs: { 303 buildInputs = [ gmp ]; 304 crateBin = [ 305 { 306 name = "rink"; 307 path = "src/bin/rink.rs"; 308 } 309 ]; 310 }; 311 312 sequoia-openpgp = attrs: { 313 buildInputs = [ gmp ]; 314 }; 315 316 sequoia-openpgp-ffi = attrs: { 317 buildInputs = [ gmp ]; 318 }; 319 320 sequoia-ipc = attrs: { 321 buildInputs = [ gmp ]; 322 }; 323 324 sequoia-guide = attrs: { 325 buildInputs = [ gmp ]; 326 }; 327 328 pangocairo-sys = attr: { 329 nativeBuildInputs = [ pkg-config ]; 330 buildInputs = [ pango ]; 331 }; 332 333 sequoia-store = attrs: { 334 nativeBuildInputs = [ capnproto ]; 335 buildInputs = [ 336 sqlite 337 gmp 338 ]; 339 }; 340 341 sequoia-sq = attrs: { 342 buildInputs = [ 343 sqlite 344 gmp 345 ]; 346 }; 347 348 sequoia-tool = attrs: { 349 nativeBuildInputs = [ capnproto ]; 350 buildInputs = [ 351 sqlite 352 gmp 353 ]; 354 }; 355 356 servo-fontconfig-sys = attrs: { 357 nativeBuildInputs = [ pkg-config ]; 358 buildInputs = [ 359 freetype 360 fontconfig 361 ]; 362 }; 363 364 soup3-sys = attrs: { 365 nativeBuildInputs = [ pkg-config ]; 366 buildInputs = [ libsoup_3 ]; 367 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 368 }; 369 370 thrussh-libsodium = attrs: { 371 nativeBuildInputs = [ pkg-config ]; 372 buildInputs = [ libsodium ]; 373 }; 374 375 tonic-reflection = attrs: { 376 nativeBuildInputs = [ protobuf ]; 377 }; 378 379 webkit2gtk-sys = attrs: { 380 nativeBuildInputs = [ pkg-config ]; 381 buildInputs = [ webkitgtk_4_1 ]; 382 extraLinkFlags = [ "-L${zlib.out}/lib" ]; 383 }; 384 385 xcb = attrs: { 386 buildInputs = [ python3 ]; 387 }; 388 389 atk-sys = attrs: { 390 nativeBuildInputs = [ pkg-config ]; 391 buildInputs = [ atk ]; 392 }; 393 394 # Assumes it can run Command::new(env::var("CARGO")).arg("locate-project") 395 # https://github.com/bkchr/proc-macro-crate/blame/master/src/lib.rs#L242 396 proc-macro-crate = 397 attrs: 398 lib.optionalAttrs (lib.versionAtLeast attrs.version "2.0") { 399 postPatch = (attrs.postPatch or "") + '' 400 substituteInPlace \ 401 src/lib.rs \ 402 --replace-fail \ 403 'env::var("CARGO")' \ 404 'Ok::<_, core::convert::Infallible>("${lib.getBin buildPackages.cargo}/bin/cargo")' 405 ''; 406 }; 407}