anchor.diff:        ) [ "imap" "http" "nntp" ]);
       systemd.services = mkMerge [
         (mkIf cfg.imap.enable
  -        { public-inbox-imapd = {
  +        { public-inbox-imapd = mkMerge [(serviceConfig "imapd") {
             after = [ "public-inbox-init.service" "public-inbox-watch.service" ];
             requires = [ "public-inbox-init.service" ];
  -          serviceConfig = mkMerge [(serviceConfig "imapd") {
  +          serviceConfig = {
               ExecStart = escapeShellArgs (
                 [ "${cfg.package}/bin/public-inbox-imapd" ] ++
                 cfg.imap.args ++
                 optionals (cfg.imap.cert != null) [ "--cert" cfg.imap.cert ] ++
                 optionals (cfg.imap.key != null) [ "--key" cfg.imap.key ]
               );
  -          }];
  -        };
  +          };
  +        }];
         })
         (mkIf cfg.http.enable
  -        { public-inbox-httpd = {
  +        { public-inbox-httpd = mkMerge [(serviceConfig "httpd") {
             after = [ "public-inbox-init.service" "public-inbox-watch.service" ];
             requires = [ "public-inbox-init.service" ];
  -          serviceConfig = mkMerge [(serviceConfig "httpd") {
  +          serviceConfig = {
               ExecStart = escapeShellArgs (
                 [ "${cfg.package}/bin/public-inbox-httpd" ] ++
                 cfg.http.args ++
  
positive.code:               ${cfg.package}/bin/public-inbox-index "$inbox"
              done
            '';
            serviceConfig = mkMerge [(serviceConfig "init") {
              Type = "oneshot";
              RemainAfterExit = true;
              StateDirectory = [
                "public-inbox"
                "public-inbox/.public-inbox"
                "public-inbox/.public-inbox/emergency"
                "public-inbox/inboxes"
              ];
              StateDirectoryMode = "0750";
            }];
          };
        })
      ];
      environment.systemPackages = with pkgs; [ cfg.package ];
  
negative.code:           type = types.str;
            example = "user/dev discussion of public-inbox itself";
            description = "User-visible description for the repository.";
            apply = pkgs.writeText "public-inbox-description-${name}";
          };
          options.newsgroup = mkOption {
            type = with types; nullOr str;
  