nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 rustPlatform,
4 fetchFromGitHub,
5 pkg-config,
6 shared-mime-info,
7 installShellFiles,
8 scdoc,
9 bzip2,
10 openssl,
11 sqlite,
12 xz,
13 zstd,
14 stdenv,
15 buildPackages,
16 versionCheckHook,
17 nixosTests,
18 nix-update-script,
19}:
20
21rustPlatform.buildRustPackage (finalAttrs: {
22 pname = "rebuilderd";
23 version = "0.25.0";
24
25 src = fetchFromGitHub {
26 owner = "kpcyrd";
27 repo = "rebuilderd";
28 tag = "v${finalAttrs.version}";
29 hash = "sha256-BuL9s3ewZ1NvR9GG51TVrAncB0PR78Wuw8by+loSP8Q=";
30 };
31
32 postPatch = ''
33 substituteInPlace tools/src/args.rs \
34 --replace-fail "/etc/rebuilderd-sync.conf" '${placeholder "out"}/etc/rebuilderd-sync.conf'
35
36 substituteInPlace worker/src/config.rs \
37 --replace-fail 'from("/etc/rebuilderd-worker.conf")' 'from("${placeholder "out"}/etc/rebuilderd-worker.conf")'
38
39 substituteInPlace worker/src/proc.rs \
40 --replace-fail '/bin/echo' 'echo'
41 '';
42
43 cargoHash = "sha256-4M5uWgksYsV8PGe0zn9ADv06q3Ga/GVoQ8HjS7GCnwo=";
44
45 nativeBuildInputs = [
46 pkg-config
47 installShellFiles
48 scdoc
49 ];
50
51 buildInputs = [
52 bzip2
53 openssl
54 shared-mime-info
55 sqlite
56 xz
57 zstd
58 ];
59
60 postInstall =
61 let
62 emulator = stdenv.hostPlatform.emulator buildPackages;
63 in
64 ''
65 mkdir -p $out/etc
66
67 # install config files
68 install -Dm 644 -t "$out/etc" contrib/confs/rebuilderd-sync.conf
69 install -Dm 640 -t "$out/etc" contrib/confs/rebuilderd-worker.conf contrib/confs/rebuilderd.conf
70
71 installShellCompletion --cmd rebuildctl \
72 --bash <(${emulator} $out/bin/rebuildctl completions bash) \
73 --fish <(${emulator} $out/bin/rebuildctl completions fish) \
74 --zsh <(${emulator} $out/bin/rebuildctl completions zsh)
75
76 for f in contrib/docs/*.scd; do
77 local page="contrib/docs/$(basename "$f" .scd)"
78 scdoc < "$f" > "$page"
79 installManPage "$page"
80 done
81 '';
82
83 checkFlags = [
84 # Failing tests
85 "--skip=decompress::tests::decompress_bzip2_compression"
86 "--skip=decompress::tests::decompress_gzip_compression"
87 "--skip=decompress::tests::decompress_xz_compression"
88 "--skip=decompress::tests::decompress_zstd_compression"
89 "--skip=decompress::tests::detect_bzip2_compression"
90 "--skip=decompress::tests::detect_gzip_compression"
91 "--skip=decompress::tests::detect_xz_compression"
92 "--skip=decompress::tests::detect_zstd_compression"
93 "--skip=proc::tests::hello_world"
94 "--skip=proc::tests::size_limit_kill"
95 "--skip=proc::tests::size_limit_no_kill"
96 "--skip=proc::tests::size_limit_no_kill_but_timeout"
97 "--skip=proc::tests::timeout"
98 ];
99
100 nativeInstallCheckInputs = [
101 versionCheckHook
102 ];
103 doInstallCheck = true;
104
105 passthru.tests = {
106 rebuilderd = nixosTests.rebuilderd;
107 };
108
109 passthru.updateScript = nix-update-script { };
110
111 meta = {
112 description = "Independent verification of binary packages - reproducible builds";
113 homepage = "https://github.com/kpcyrd/rebuilderd";
114 license = lib.licenses.gpl3Plus;
115 maintainers = [ ];
116 mainProgram = "rebuilderd";
117 };
118})