nixos/roundcube: add package option

With this option it's possible to specify a custom expression for
`roundcube`, i.e. a roundcube environment with third-party plugins as
shown in the testcase.
This commit is contained in:
Maximilian Bosch 2019-01-31 22:45:14 +01:00 committed by Robin Gloster
parent df0d11575c
commit 6fb825b057
2 changed files with 20 additions and 4 deletions

View File

@ -25,6 +25,20 @@ in
description = "Hostname to use for the nginx vhost";
};
package = mkOption {
type = types.package;
default = pkgs.roundcube;
example = literalExample ''
roundcube.withPlugins (plugins: [ plugins.persistent_login ])
'';
description = ''
The package which contains roundcube's sources. Can be overriden to create
an environment which contains roundcube and third-party plugins.
'';
};
database = {
username = mkOption {
type = types.str;
@ -86,7 +100,7 @@ in
forceSSL = mkDefault true;
enableACME = mkDefault true;
locations."/" = {
root = pkgs.roundcube;
root = cfg.package;
index = "index.php";
extraConfig = ''
location ~* \.php$ {
@ -140,12 +154,12 @@ in
${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql postgres -c "create database ${cfg.database.dbname} with owner ${cfg.database.username}";
fi
PGPASSWORD=${cfg.database.password} ${pkgs.postgresql}/bin/psql -U ${cfg.database.username} \
-f ${pkgs.roundcube}/SQL/postgres.initial.sql \
-f ${cfg.package}/SQL/postgres.initial.sql \
-h ${cfg.database.host} ${cfg.database.dbname}
touch /var/lib/roundcube/db-created
fi
${pkgs.php}/bin/php ${pkgs.roundcube}/bin/update.sh
${pkgs.php}/bin/php ${cfg.package}/bin/update.sh
'';
serviceConfig.Type = "oneshot";
};

View File

@ -10,6 +10,8 @@ import ./make-test.nix ({ pkgs, ...} : {
enable = true;
hostName = "roundcube";
database.password = "notproduction";
package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]);
plugins = [ "persistent_login" ];
};
services.nginx.virtualHosts.roundcube = {
forceSSL = false;
@ -23,6 +25,6 @@ import ./make-test.nix ({ pkgs, ...} : {
$roundcube->waitForUnit("postgresql.service");
$roundcube->waitForUnit("phpfpm-roundcube.service");
$roundcube->waitForUnit("nginx.service");
$roundcube->succeed("curl -sSfL http://roundcube/");
$roundcube->succeed("curl -sSfL http://roundcube/ | grep 'Keep me logged in'");
'';
})