diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index 95066fc11f3492..cd825ee7028754 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -26,7 +26,10 @@ let
upload_max_filesize = cfg.maxUploadSize;
post_max_size = cfg.maxUploadSize;
memory_limit = cfg.maxUploadSize;
- } // cfg.phpOptions;
+ } // cfg.phpOptions
+ // optionalAttrs cfg.caching.apcu {
+ "apc.enable_cli" = "1";
+ };
phpOptionsStr = toKeyValue phpOptions;
occ = pkgs.writeScriptBin "nextcloud-occ" ''
@@ -85,7 +88,7 @@ in {
package = mkOption {
type = types.package;
description = "Which package to use for the Nextcloud instance.";
- relatedPackages = [ "nextcloud18" "nextcloud19" "nextcloud20" ];
+ relatedPackages = [ "nextcloud18" "nextcloud19" "nextcloud20" "nextcloud21" ];
};
maxUploadSize = mkOption {
@@ -264,6 +267,24 @@ in {
may be served via HTTPS.
'';
};
+
+ defaultPhoneRegion = mkOption {
+ default = null;
+ type = types.nullOr types.str;
+ example = "DE";
+ description = ''
+
+ This option exists since Nextcloud 21! If older versions are used,
+ this will throw an eval-error!
+
+
+ ISO 3611-1
+ country codes for automatic phone-number detection without a country code.
+
+ With e.g. DE set, the +49 can be omitted for
+ phone-numbers.
+ '';
+ };
};
caching = {
@@ -329,6 +350,9 @@ in {
&& !(acfg.adminpass != null && acfg.adminpassFile != null));
message = "Please specify exactly one of adminpass or adminpassFile";
}
+ { assertion = versionOlder cfg.package.version "21" -> cfg.config.defaultPhoneRegion == null;
+ message = "The `defaultPhoneRegion'-setting is only supported for Nextcloud >=21!";
+ }
];
warnings = []
@@ -362,9 +386,10 @@ in {
support upgrades that skip multiple versions (i.e. an upgrade from 17 to 19 isn't
possible, but an upgrade from 18 to 19).
'')
- ++ (optional (versionOlder cfg.package.version "20") ''
- The latest Nextcloud release is v20 which can be installed by setting
- `services.nextcloud.package` to `pkgs.nextcloud20`.
+ ++ (optional (versionOlder cfg.package.version "21") ''
+ The latest Nextcloud release is v21 which can be installed by setting
+ `services.nextcloud.package` to `pkgs.nextcloud21`. Please note that if you're
+ on `pkgs.nextcloud19`, you'll have to install `pkgs.nextcloud20` first.
'');
services.nextcloud.package = with pkgs;
@@ -433,6 +458,7 @@ in {
'dbtype' => '${c.dbtype}',
'trusted_domains' => ${writePhpArrary ([ cfg.hostName ] ++ c.extraTrustedDomains)},
'trusted_proxies' => ${writePhpArrary (c.trustedProxies)},
+ ${optionalString (c.defaultPhoneRegion != null) "'default_phone_region' => '${c.defaultPhoneRegion}',"}
];
'';
occInstallCmd = let
@@ -582,6 +608,14 @@ in {
access_log off;
'';
};
+ "= /" = {
+ priority = 100;
+ extraConfig = ''
+ if ( $http_user_agent ~ ^DavClnt ) {
+ return 302 /remote.php/webdav/$is_args$args;
+ }
+ '';
+ };
"/" = {
priority = 900;
extraConfig = "rewrite ^ /index.php;";
@@ -600,6 +634,9 @@ in {
location = /.well-known/caldav {
return 301 /remote.php/dav;
}
+ location ~ ^/\.well-known/(?!acme-challenge|pki-validation) {
+ return 301 /index.php$request_uri;
+ }
try_files $uri $uri/ =404;
'';
};
diff --git a/nixos/modules/services/web-apps/nextcloud.xml b/nixos/modules/services/web-apps/nextcloud.xml
index a0a55e4a847597..45f34073fc0a4c 100644
--- a/nixos/modules/services/web-apps/nextcloud.xml
+++ b/nixos/modules/services/web-apps/nextcloud.xml
@@ -12,7 +12,8 @@
The current default by NixOS is nextcloud19 though it's recommended
- to upgrade to the latest version, nextcloud20.
+ to upgrade to the latest version, nextcloud21. Please note that it's necessary
+ to install nextcloud20 first!
Basic usage
diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix
index 9c9765c3f446ad..a386ded6f5c699 100644
--- a/pkgs/servers/nextcloud/default.nix
+++ b/pkgs/servers/nextcloud/default.nix
@@ -61,4 +61,9 @@ in {
version = "20.0.7";
sha256 = "sha256-jO2Ct3K/CvZ9W+EyPkD5d0KbwKK8yGQJXvx4dnUAtys=";
};
+
+ nextcloud21 = generic {
+ version = "21.0.0";
+ sha256 = "sha256-zq2u72doWhGvxbI7Coa6PHvQp7E41dHswFJiODZV8fA=";
+ };
}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 36f8f27e7a9950..40187cf451fbb4 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5713,7 +5713,7 @@ in
grocy = callPackage ../servers/grocy { };
inherit (callPackage ../servers/nextcloud {})
- nextcloud17 nextcloud18 nextcloud19 nextcloud20;
+ nextcloud17 nextcloud18 nextcloud19 nextcloud20 nextcloud21;
nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };