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 { };