nextcloud21: init at 21.0.0, set as default version

ChangeLog: https://nextcloud.com/changelog/#latest21

* Packaged 21.0.0, test-deployed it to my personal instance and tested
the most basic functionality (`davfs2`-mount, {card,cal}dav sync, file
management).

* Bumped the default version for unstable/21.05 to `nextcloud21`. Since
`nextcloud20` was added after the release of 20.09 (and thus the
default on 20.09 is still `nextcloud19`), it's now needed to upgrade
across two majors.

This is not a problem though since it's possible to upgrade to v20 on
20.09 already and if not, the module will guard the administrator
through the upgrade with eval warnings as it's the case since 20.03.

* Dropped `nextcloud17` attribute and marked `nextcloud18` as EOL.

Changed files
+22 -21
nixos
doc
manual
release-notes
modules
services
pkgs
servers
nextcloud
top-level
+5 -3
nixos/doc/manual/release-notes/rl-2105.xml
···
</listitem>
<listitem>
<para>
-
The default-version of <literal>nextcloud</literal> is <package>nextcloud20</package>.
Please note that it's <emphasis>not</emphasis> possible to upgrade <literal>nextcloud</literal>
across multiple major versions! This means that it's e.g. not possible to upgrade
-
from <package>nextcloud18</package> to <package>nextcloud20</package> in a single deploy.
</para>
<para>
The package can be manually upgraded by setting <xref linkend="opt-services.nextcloud.package" />
-
to <package>nextcloud20</package>.
</para>
</listitem>
<listitem>
···
</listitem>
<listitem>
<para>
+
The default-version of <literal>nextcloud</literal> is <package>nextcloud21</package>.
Please note that it's <emphasis>not</emphasis> possible to upgrade <literal>nextcloud</literal>
across multiple major versions! This means that it's e.g. not possible to upgrade
+
from <package>nextcloud18</package> to <package>nextcloud20</package> in a single deploy and
+
most <literal>20.09</literal> users will have to upgrade to <package>nextcloud20</package>
+
first.
</para>
<para>
The package can be manually upgraded by setting <xref linkend="opt-services.nextcloud.package" />
+
to <package>nextcloud21</package>.
</para>
</listitem>
<listitem>
+5 -6
nixos/modules/services/web-apps/nextcloud.nix
···
package = mkOption {
type = types.package;
description = "Which package to use for the Nextcloud instance.";
-
relatedPackages = [ "nextcloud18" "nextcloud19" "nextcloud20" ];
};
maxUploadSize = mkOption {
···
];
warnings = let
-
latest = 20;
upgradeWarning = major: nixos:
''
A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···
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 "18") (upgradeWarning 17 "20.03"))
++ (optional (versionOlder cfg.package.version "19") (upgradeWarning 18 "20.09"))
-
++ (optional (versionOlder cfg.package.version "20") (upgradeWarning 19 "21.05"));
services.nextcloud.package = with pkgs;
mkDefault (
···
nextcloud defined in an overlay, please set `services.nextcloud.package` to
`pkgs.nextcloud`.
''
-
else if versionOlder stateVersion "20.03" then nextcloud17
else if versionOlder stateVersion "20.09" then nextcloud18
# 21.03 will not be an official release - it was instead 21.05.
# 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 nextcloud20
);
}
···
package = mkOption {
type = types.package;
description = "Which package to use for the Nextcloud instance.";
+
relatedPackages = [ "nextcloud19" "nextcloud20" "nextcloud21" ];
};
maxUploadSize = mkOption {
···
];
warnings = let
+
latest = 21;
upgradeWarning = major: nixos:
''
A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···
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 "19") (upgradeWarning 18 "20.09"))
+
++ (optional (versionOlder cfg.package.version "20") (upgradeWarning 19 "21.05"))
+
++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"));
services.nextcloud.package = with pkgs;
mkDefault (
···
nextcloud defined in an overlay, please set `services.nextcloud.package` to
`pkgs.nextcloud`.
''
else if versionOlder stateVersion "20.09" then nextcloud18
# 21.03 will not be an official release - it was instead 21.05.
# 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 nextcloud21
);
}
+1 -1
nixos/modules/services/web-apps/nextcloud.xml
···
desktop client is packaged at <literal>pkgs.nextcloud-client</literal>.
</para>
<para>
-
The current default by NixOS is <package>nextcloud20</package> which is also the latest
major version available.
</para>
<section xml:id="module-services-nextcloud-basic-usage">
···
desktop client is packaged at <literal>pkgs.nextcloud-client</literal>.
</para>
<para>
+
The current default by NixOS is <package>nextcloud21</package> which is also the latest
major version available.
</para>
<section xml:id="module-services-nextcloud-basic-usage">
+10 -10
pkgs/servers/nextcloud/default.nix
···
};
};
in {
-
nextcloud17 = throw ''
-
Nextcloud v17 has been removed from `nixpkgs` as the support for it will be dropped
-
by upstream within the lifetime of NixOS 20.09[1]. Please upgrade to Nextcloud v18 by
declaring
-
services.nextcloud.package = pkgs.nextcloud18;
in your NixOS config.
[1] https://docs.nextcloud.com/server/18/admin_manual/release_schedule.html
'';
-
nextcloud18 = generic {
-
version = "18.0.10";
-
sha256 = "0kv9mdn36shr98kh27969b8xs7pgczbyjklrfskxy9mph7bbzir6";
-
eol = true;
-
};
-
nextcloud19 = generic {
version = "19.0.6";
sha256 = "sha256-pqqIayE0OyTailtd2zeYi+G1APjv/YHqyO8jCpq7KJg=";
···
nextcloud20 = generic {
version = "20.0.7";
sha256 = "sha256-jO2Ct3K/CvZ9W+EyPkD5d0KbwKK8yGQJXvx4dnUAtys=";
};
}
···
};
};
in {
+
nextcloud18 = throw ''
+
Nextcloud v18 has been removed from `nixpkgs` as the support for it was dropped
+
by upstream in 2021-01. Please upgrade to at least Nextcloud v19 by
declaring
+
services.nextcloud.package = pkgs.nextcloud19;
in your NixOS config.
[1] https://docs.nextcloud.com/server/18/admin_manual/release_schedule.html
'';
+
# FIXME(@Ma27) remove on 2021-06
nextcloud19 = generic {
version = "19.0.6";
sha256 = "sha256-pqqIayE0OyTailtd2zeYi+G1APjv/YHqyO8jCpq7KJg=";
···
nextcloud20 = generic {
version = "20.0.7";
sha256 = "sha256-jO2Ct3K/CvZ9W+EyPkD5d0KbwKK8yGQJXvx4dnUAtys=";
+
};
+
+
nextcloud21 = generic {
+
version = "21.0.0";
+
sha256 = "sha256-zq2u72doWhGvxbI7Coa6PHvQp7E41dHswFJiODZV8fA=";
};
}
+1 -1
pkgs/top-level/all-packages.nix
···
grocy = callPackage ../servers/grocy { };
inherit (callPackage ../servers/nextcloud {})
-
nextcloud17 nextcloud18 nextcloud19 nextcloud20;
nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };
···
grocy = callPackage ../servers/grocy { };
inherit (callPackage ../servers/nextcloud {})
+
nextcloud18 nextcloud19 nextcloud20 nextcloud21;
nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };