nixos/gerrit: allow configuring replication declaratively (#91200)

This commit is contained in:
edef 2020-06-21 08:54:14 +00:00 committed by GitHub
parent a4de542abe
commit c27fc6a5e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,6 +17,10 @@ let
lib.generators.toGitINI cfg.settings lib.generators.toGitINI cfg.settings
); );
replicationConfig = pkgs.writeText "replication.conf" (
lib.generators.toGitINI cfg.replicationSettings
);
# Wrap the gerrit java with all the java options so it can be called # Wrap the gerrit java with all the java options so it can be called
# like a normal CLI app # like a normal CLI app
gerrit-cli = pkgs.writeShellScriptBin "gerrit" '' gerrit-cli = pkgs.writeShellScriptBin "gerrit" ''
@ -106,6 +110,15 @@ in
''; '';
}; };
replicationSettings = mkOption {
type = gitIniType;
default = {};
description = ''
Replication configuration. This will be generated to the
<literal>etc/replication.config</literal> file.
'';
};
plugins = mkOption { plugins = mkOption {
type = types.listOf types.package; type = types.listOf types.package;
default = []; default = [];
@ -138,6 +151,13 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [
{
assertion = cfg.replicationSettings != {} -> elem "replication" cfg.builtinPlugins;
message = "Gerrit replicationSettings require enabling the replication plugin";
}
];
services.gerrit.settings = { services.gerrit.settings = {
cache.directory = "/var/cache/gerrit"; cache.directory = "/var/cache/gerrit";
container.heapLimit = cfg.jvmHeapLimit; container.heapLimit = cfg.jvmHeapLimit;
@ -194,6 +214,7 @@ in
# copy the config, keep it mutable because Gerrit # copy the config, keep it mutable because Gerrit
ln -sfv ${gerritConfig} etc/gerrit.config ln -sfv ${gerritConfig} etc/gerrit.config
ln -sfv ${replicationConfig} etc/replication.config
# install the plugins # install the plugins
rm -rf plugins rm -rf plugins