1{
2 config,
3 pkgs,
4 lib,
5 ...
6}:
7
8let
9 inherit (lib) mkEnableOption mkIf mkPackageOption;
10 cfg = config.services.rebuilderd;
11
12 format = pkgs.formats.toml { };
13 settings = lib.attrsets.filterAttrs (n: v: v != null) cfg.settings;
14 configFile = format.generate "rebuilderd.conf" settings;
15in
16{
17 options.services.rebuilderd = {
18 enable = mkEnableOption "rebuilderd service for independent verification of binary packages";
19 package = mkPackageOption pkgs "rebuilderd" { };
20 settings = lib.mkOption {
21 type = lib.types.submodule {
22 freeformType = format.type;
23 };
24 default = { };
25 description = ''
26 Configuration for rebuilderd (rebuilderd.conf)
27 '';
28 };
29 };
30
31 config = mkIf cfg.enable {
32 systemd.services.rebuilderd = {
33 description = "Independent verification of binary packages";
34 wantedBy = [ "multi-user.target" ];
35 environment = {
36 REBUILDERD_COOKIE_PATH = "/var/lib/rebuilderd/auth-cookie";
37 };
38 after = [
39 "network.target"
40 ];
41 serviceConfig = {
42 ExecStart = "${cfg.package}/bin/rebuilderd --config ${configFile}";
43 DynamicUser = true;
44 StateDirectory = "rebuilderd";
45 WorkingDirectory = "/var/lib/rebuilderd";
46 };
47 };
48 };
49}