lol
1{ fetchFromGitHub
2, rustPlatform
3, pkg-config
4, python3
5, cmake
6, libmysqlclient
7, makeBinaryWrapper
8, lib
9}:
10
11let
12 pyFxADeps = python3.withPackages (p: [
13 p.setuptools # imports pkg_resources
14 # remainder taken from requirements.txt
15 p.pyfxa
16 p.tokenlib
17 p.cryptography
18 ]);
19in
20
21rustPlatform.buildRustPackage rec {
22 pname = "syncstorage-rs";
23 version = "0.14.1";
24
25 src = fetchFromGitHub {
26 owner = "mozilla-services";
27 repo = pname;
28 rev = "refs/tags/${version}";
29 hash = "sha256-7lIFHK0XSOtfDEy6N9jcPGOd5Por5i1CBdDZQBiHm8c=";
30 };
31
32 nativeBuildInputs = [
33 cmake
34 makeBinaryWrapper
35 pkg-config
36 python3
37 ];
38
39 buildInputs = [
40 libmysqlclient
41 ];
42
43 preFixup = ''
44 wrapProgram $out/bin/syncserver \
45 --prefix PATH : ${lib.makeBinPath [ pyFxADeps ]}
46 '';
47
48 cargoLock = {
49 lockFile = ./Cargo.lock;
50 outputHashes = {
51 "deadpool-0.5.2" = "sha256-V3v03t8XWA6rA8RaNunq2kh2U+6Lc2C2moKdaF2bmEc=";
52 };
53 };
54
55 # almost all tests need a DB to test against
56 doCheck = false;
57
58 meta = {
59 description = "Mozilla Sync Storage built with Rust";
60 homepage = "https://github.com/mozilla-services/syncstorage-rs";
61 changelog = "https://github.com/mozilla-services/syncstorage-rs/releases/tag/${version}";
62 license = lib.licenses.mpl20;
63 maintainers = with lib.maintainers; [ pennae ];
64 platforms = lib.platforms.linux;
65 };
66}