nixos/nextcloud: add phpExtraExtensions option

This commit is contained in:
Aaron Andersen 2021-01-09 11:53:30 -05:00 committed by Manuel Bärenz
parent b1c006f055
commit 434a2783b8
2 changed files with 23 additions and 11 deletions

View File

@ -6,17 +6,13 @@ let
cfg = config.services.nextcloud; cfg = config.services.nextcloud;
fpm = config.services.phpfpm.pools.nextcloud; fpm = config.services.phpfpm.pools.nextcloud;
phpPackage = phpPackage = pkgs.php74.buildEnv {
let extensions = { enabled, all }:
base = pkgs.php74; enabled
in ++ (with all; [ apcu redis memcached imagick ]) # Necessary for vanilla nextcloud
base.buildEnv { ++ cfg.phpExtraExtensions all; # Enabled by user
extensions = { enabled, all }: with all; extraConfig = phpOptionsStr;
enabled ++ [ };
apcu redis memcached imagick
];
extraConfig = phpOptionsStr;
};
toKeyValue = generators.toKeyValue { toKeyValue = generators.toKeyValue {
mkKeyValue = generators.mkKeyValueDefault {} " = "; mkKeyValue = generators.mkKeyValueDefault {} " = ";
@ -116,6 +112,21 @@ in {
''; '';
}; };
phpExtraExtensions = mkOption {
type = with types; functionTo (listOf package);
default = all: [];
defaultText = "all: []";
description = ''
Additional PHP extensions to use for nextcloud.
By default, only extensions necessary for a vanilla nextcloud installation are enabled,
but you may choose from the list of available extensions and add further ones.
This is sometimes necessary to be able to install a certain nextcloud app that has additional requirements.
'';
example = literalExample ''
all: [ all.pdlib all.bz2 ]
'';
};
phpOptions = mkOption { phpOptions = mkOption {
type = types.attrsOf types.str; type = types.attrsOf types.str;
default = { default = {

View File

@ -42,6 +42,7 @@ in {
enable = true; enable = true;
startAt = "20:00"; startAt = "20:00";
}; };
phpExtraExtensions = all: [ all.bz2 ];
}; };
environment.systemPackages = [ cfg.services.nextcloud.occ ]; environment.systemPackages = [ cfg.services.nextcloud.occ ];