summary refs log tree commit diff
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2021-01-09 11:53:30 -0500
committerManuel Bärenz <programming@manuelbaerenz.de>2021-01-27 11:05:00 +0100
commit434a2783b80a799c5abddb71d9ea8945c9750f5e (patch)
treed91127da7a715da21e2584114845393e34c7c9bc
parentb1c006f05599b41b798e47baa4d9ba6d1a8c07a5 (diff)
downloadnixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar.gz
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar.bz2
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar.lz
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar.xz
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.tar.zst
nixpkgs-434a2783b80a799c5abddb71d9ea8945c9750f5e.zip
nixos/nextcloud: add phpExtraExtensions option
-rw-r--r--nixos/modules/services/web-apps/nextcloud.nix33
-rw-r--r--nixos/tests/nextcloud/basic.nix1
2 files changed, 23 insertions, 11 deletions
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index da019aa2507..448522ad5e8 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -6,17 +6,13 @@ 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 }:
+      enabled
+      ++ (with all; [ apcu redis memcached imagick ]) # Necessary for vanilla nextcloud
+      ++ cfg.phpExtraExtensions all; # Enabled by user
+    extraConfig = phpOptionsStr;
+  };
 
   toKeyValue = generators.toKeyValue {
     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 {
       type = types.attrsOf types.str;
       default = {
diff --git a/nixos/tests/nextcloud/basic.nix b/nixos/tests/nextcloud/basic.nix
index 78142d37966..90050447042 100644
--- a/nixos/tests/nextcloud/basic.nix
+++ b/nixos/tests/nextcloud/basic.nix
@@ -42,6 +42,7 @@ in {
           enable = true;
           startAt = "20:00";
         };
+        phpExtraExtensions = all: [ all.bz2 ];
       };
 
       environment.systemPackages = [ cfg.services.nextcloud.occ ];