summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/web-apps/nextcloud.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/web-apps/nextcloud.nix')
-rw-r--r--nixos/modules/services/web-apps/nextcloud.nix41
1 files changed, 28 insertions, 13 deletions
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index da019aa25079..1b643bd3260a 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -6,17 +6,19 @@ let
cfg = config.services.nextcloud;
fpm = config.services.phpfpm.pools.nextcloud;
- phpPackage =
- let
- base = pkgs.php74;
- in
- base.buildEnv {
- extensions = { enabled, all }: with all;
- enabled ++ [
- apcu redis memcached imagick
- ];
- extraConfig = phpOptionsStr;
- };
+ phpPackage = pkgs.php74.buildEnv {
+ extensions = { enabled, all }:
+ (with all;
+ enabled
+ ++ [ imagick ] # Always enabled
+ # Optionally enabled depending on caching settings
+ ++ optional cfg.caching.apcu apcu
+ ++ optional cfg.caching.redis redis
+ ++ optional cfg.caching.memcached memcached
+ )
+ ++ cfg.phpExtraExtensions all; # Enabled by user
+ extraConfig = toKeyValue phpOptions;
+ };
toKeyValue = generators.toKeyValue {
mkKeyValue = generators.mkKeyValueDefault {} " = ";
@@ -27,7 +29,6 @@ let
post_max_size = cfg.maxUploadSize;
memory_limit = cfg.maxUploadSize;
} // cfg.phpOptions;
- phpOptionsStr = toKeyValue phpOptions;
occ = pkgs.writeScriptBin "nextcloud-occ" ''
#! ${pkgs.runtimeShell}
@@ -116,6 +117,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 {
type = types.attrsOf types.str;
default = {
@@ -511,7 +527,6 @@ in {
pools.nextcloud = {
user = "nextcloud";
group = "nextcloud";
- phpOptions = phpOptionsStr;
phpPackage = phpPackage;
phpEnv = {
NEXTCLOUD_CONFIG_DIR = "${cfg.home}/config";