nextcloud20: drop

The version 20 of Nextcloud will be EOLed by the end of this month[1].

Since the recommended default (that didn't raise an eval-warning) on
21.05 was Nextcloud 21, this shouldn't affect too many people.

In order to ensure that nobody does a (not working) upgrade across
several major-versions of Nextcloud, I replaced the derivation of
`nextcloud20` with a `throw` that provides instructions how to proceed.

The only case that I consider "risky" is a setup upgraded from 21.05 (or
older) with a `system.stateVersion` <21.11 and with
`services.nextcloud.package` not explicitly declared in its config. To
avoid that, I also left the `else-if` for `stateVersion < 21.03` which
now sets `services.nextcloud.package` to `pkgs.nextcloud20` and thus
leads to an eval-error. This condition can be removed
as soon as 21.05 is EOL because then it's safe to assume that only
21.11. is used as stable release where no Nextcloud <=20 exists that can
lead to such an issue.

It can't be removed earlier because then every `system.stateVersion <
21.11` would lead to `nextcloud21` which is a problem if `nextcloud19`
is still used.

[1] https://docs.nextcloud.com/server/20/admin_manual/release_schedule.html

Changed files
+23 -15
nixos
doc
manual
from_md
release-notes
release-notes
modules
services
web-apps
tests
nextcloud
pkgs
servers
nextcloud
top-level
+6
nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
···
will no longer work and must be updated.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-notable-changes">
···
will no longer work and must be updated.
</para>
</listitem>
+
<listitem>
+
<para>
+
Nextcloud 20 (<literal>pkgs.nextcloud20</literal>) has been
+
dropped because it was EOLed by upstream in 2021-10.
+
</para>
+
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-notable-changes">
+2
nixos/doc/manual/release-notes/rl-2111.section.md
···
- The `services.mosquitto` module has been rewritten to support multiple listeners and per-listener configuration.
Module configurations from previous releases will no longer work and must be updated.
## Other Notable Changes {#sec-release-21.11-notable-changes}
···
- The `services.mosquitto` module has been rewritten to support multiple listeners and per-listener configuration.
Module configurations from previous releases will no longer work and must be updated.
+
- Nextcloud 20 (`pkgs.nextcloud20`) has been dropped because it was EOLed by upstream in 2021-10.
+
## Other Notable Changes {#sec-release-21.11-notable-changes}
+6 -3
nixos/modules/services/web-apps/nextcloud.nix
···
package = mkOption {
type = types.package;
description = "Which package to use for the Nextcloud instance.";
-
relatedPackages = [ "nextcloud20" "nextcloud21" "nextcloud22" ];
};
phpPackage = mkOption {
type = types.package;
···
Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
Please migrate your configuration to config.services.nextcloud.poolSettings.
'')
-
++ (optional (versionOlder cfg.package.version "20") (upgradeWarning 19 "21.05"))
++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"))
++ (optional (versionOlder cfg.package.version "22") (upgradeWarning 21 "21.11"))
++ (optional isUnsupportedMariadb ''
···
# This versionOlder statement remains set to 21.03 for backwards compatibility.
# See https://github.com/NixOS/nixpkgs/pull/108899 and
# https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md.
-
else if versionOlder stateVersion "21.03" then nextcloud19
else if versionOlder stateVersion "21.11" then nextcloud21
else nextcloud22
);
···
package = mkOption {
type = types.package;
description = "Which package to use for the Nextcloud instance.";
+
relatedPackages = [ "nextcloud21" "nextcloud22" ];
};
phpPackage = mkOption {
type = types.package;
···
Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
Please migrate your configuration to config.services.nextcloud.poolSettings.
'')
++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"))
++ (optional (versionOlder cfg.package.version "22") (upgradeWarning 21 "21.11"))
++ (optional isUnsupportedMariadb ''
···
# This versionOlder statement remains set to 21.03 for backwards compatibility.
# See https://github.com/NixOS/nixpkgs/pull/108899 and
# https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md.
+
# FIXME(@Ma27) remove this else-if as soon as 21.05 is EOL! This is only here
+
# to ensure that users who are on Nextcloud 19 with a stateVersion <21.05 with
+
# no explicit services.nextcloud.package don't upgrade to v21 by accident (
+
# nextcloud20 throws an eval-error because it's dropped).
+
else if versionOlder stateVersion "21.03" then nextcloud20
else if versionOlder stateVersion "21.11" then nextcloud21
else nextcloud22
);
+1 -1
nixos/tests/nextcloud/default.nix
···
};
})
{}
-
[ 20 21 22 ]
···
};
})
{}
+
[ 21 22 ]
+7 -10
pkgs/servers/nextcloud/default.nix
···
};
};
in {
-
nextcloud19 = throw ''
-
Nextcloud v19 has been removed from `nixpkgs` as the support for it was dropped
-
by upstream in 2021-06. Please upgrade to at least Nextcloud v20 by
-
declaring
-
services.nextcloud.package = pkgs.nextcloud20;
in your NixOS config.
-
'';
-
nextcloud20 = generic {
-
version = "20.0.13";
-
sha256 = "15mi51aayi3m8brxc0w51mbxp4h3hjv14gr5mm7ch2930x655gg9";
-
};
nextcloud21 = generic {
version = "21.0.5";
···
};
};
in {
+
nextcloud20 = throw ''
+
Nextcloud v20 has been removed from `nixpkgs` as the support for it was dropped
+
by upstream in 2021-10. Please upgrade to at least Nextcloud v21 by declaring
+
services.nextcloud.package = pkgs.nextcloud21;
in your NixOS config.
+
WARNING: if you were on Nextcloud 19 on NixOS 21.05 you have to upgrade to Nextcloud 20
+
first on 21.05 because Nextcloud doesn't support upgrades accross multiple major versions!
+
'';
nextcloud21 = generic {
version = "21.0.5";
+1 -1
pkgs/top-level/all-packages.nix
···
grocy = callPackage ../servers/grocy { };
inherit (callPackage ../servers/nextcloud {})
-
nextcloud19 nextcloud20 nextcloud21 nextcloud22;
nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };
···
grocy = callPackage ../servers/grocy { };
inherit (callPackage ../servers/nextcloud {})
+
nextcloud20 nextcloud21 nextcloud22;
nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };