···166167- Deprecated `xlibsWrapper` transitional package has been removed in favour of direct use of its constitutents: `xorg.libX11`, `freetype` and others.
168000000169- .NET 5.0 was removed due to being end-of-life, use a newer, supported .NET version - https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
170171- The iputils package, which is installed by default, no longer provides the
···166167- Deprecated `xlibsWrapper` transitional package has been removed in favour of direct use of its constitutents: `xorg.libX11`, `freetype` and others.
168169+- The latest available version of Nextcloud is v26 (available as `pkgs.nextcloud26`) which uses PHP 8.2 as interpreter by default. The installation logic is as follows:
170+ - If `system.stateVersion` is >=23.05, `pkgs.nextcloud26` will be installed by default.
171+ - If `system.stateVersion` is >=22.11, `pkgs.nextcloud25` will be installed by default.
172+ - Please note that an upgrade from v24 (or older) to v26 directly is not possible. Please upgrade to `nextcloud25` (or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaring [`services.nextcloud.package = pkgs.nextcloud25;`](options.html#opt-services.nextcloud.package).
173+ - It's recommended to use the latest version available (i.e. v26) and to specify that using `services.nextcloud.package`.
174+175- .NET 5.0 was removed due to being end-of-life, use a newer, supported .NET version - https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
176177- The iputils package, which is installed by default, no longer provides the
···19 else if true == v then "yes"
20 else if false == v then "no"
21 else if isList v then concatStringsSep "," v
22- else throw "unsupported type ${typeOf v}: ${(lib.generators.toPretty {}) v}";
2324 # dont use the "=" operator
25 settingsFormat = (pkgs.formats.keyValue {
···19 else if true == v then "yes"
20 else if false == v then "no"
21 else if isList v then concatStringsSep "," v
22+ else throw "unsupported type ${builtins.typeOf v}: ${(lib.generators.toPretty {}) v}";
2324 # dont use the "=" operator
25 settingsFormat = (pkgs.formats.keyValue {
+107-79
nixos/modules/services/networking/yggdrasil.nix
···8 configFileProvided = cfg.configFile != null;
910 format = pkgs.formats.json { };
11-in {
012 imports = [
13 (mkRenamedOptionModule
14 [ "services" "yggdrasil" "config" ]
···2122 settings = mkOption {
23 type = format.type;
24- default = {};
25 example = {
26 Peers = [
27 "tcp://aa.bb.cc.dd:eeeee"
···4546 If no keys are specified then ephemeral keys are generated
47 and the Yggdrasil interface will have a random IPv6 address
48- each time the service is started, this is the default.
4950 If both {option}`configFile` and {option}`settings`
51 are supplied, they will be combined, with values from
···61 default = null;
62 example = "/run/keys/yggdrasil.conf";
63 description = lib.mdDoc ''
64- A file which contains JSON configuration for yggdrasil.
65- See the {option}`settings` option for more information.
0000066 '';
67 };
68···77 type = bool;
78 default = false;
79 description = lib.mdDoc ''
80- Whether to open the UDP port used for multicast peer
81- discovery. The NixOS firewall blocks link-local
82- communication, so in order to make local peering work you
83- will also need to set `LinkLocalTCPPort` in your
84- yggdrasil configuration ({option}`settings` or
85- {option}`configFile`) to a port number other than 0,
86- and then add that port to
87- {option}`networking.firewall.allowedTCPPorts`.
88 '';
89 };
9091 denyDhcpcdInterfaces = mkOption {
92 type = listOf str;
93- default = [];
94 example = [ "tap*" ];
95 description = lib.mdDoc ''
96 Disable the DHCP client for any interface whose name matches
···118 };
119 };
120121- config = mkIf cfg.enable (let binYggdrasil = cfg.package + "/bin/yggdrasil";
122- in {
123- assertions = [{
124- assertion = config.networking.enableIPv6;
125- message = "networking.enableIPv6 must be true for yggdrasil to work";
126- }];
0000127128- system.activationScripts.yggdrasil = mkIf cfg.persistentKeys ''
129- if [ ! -e ${keysPath} ]
130- then
131- mkdir --mode=700 -p ${builtins.dirOf keysPath}
132- ${binYggdrasil} -genconf -json \
133- | ${pkgs.jq}/bin/jq \
134- 'to_entries|map(select(.key|endswith("Key")))|from_entries' \
135- > ${keysPath}
136- fi
137- '';
138139- systemd.services.yggdrasil = {
140- description = "Yggdrasil Network Service";
141- after = [ "network-pre.target" ];
142- wants = [ "network.target" ];
143- before = [ "network.target" ];
144- wantedBy = [ "multi-user.target" ];
145146- preStart =
147- (if settingsProvided || configFileProvided || cfg.persistentKeys then
148- "echo "
0000000000149150- + (lib.optionalString settingsProvided
151- "'${builtins.toJSON cfg.settings}'")
152- + (lib.optionalString configFileProvided "$(cat ${cfg.configFile})")
153- + (lib.optionalString cfg.persistentKeys "$(cat ${keysPath})")
154- + " | ${pkgs.jq}/bin/jq -s add | ${binYggdrasil} -normaliseconf -useconf"
155- else
156- "${binYggdrasil} -genconf") + " > /run/yggdrasil/yggdrasil.conf";
000000000157158- serviceConfig = {
159- ExecStart =
160- "${binYggdrasil} -useconffile /run/yggdrasil/yggdrasil.conf";
161- ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
162- Restart = "always";
163164- DynamicUser = true;
165- StateDirectory = "yggdrasil";
166- RuntimeDirectory = "yggdrasil";
167- RuntimeDirectoryMode = "0750";
168- BindReadOnlyPaths = lib.optional configFileProvided cfg.configFile
169- ++ lib.optional cfg.persistentKeys keysPath;
170- ReadWritePaths = "/run/yggdrasil";
171172- AmbientCapabilities = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
173- CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
174- MemoryDenyWriteExecute = true;
175- ProtectControlGroups = true;
176- ProtectHome = "tmpfs";
177- ProtectKernelModules = true;
178- ProtectKernelTunables = true;
179- RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
180- RestrictNamespaces = true;
181- RestrictRealtime = true;
182- SystemCallArchitectures = "native";
183- SystemCallFilter = [ "@system-service" "~@privileged @keyring" ];
184- } // (if (cfg.group != null) then {
185- Group = cfg.group;
186- } else {});
187- };
188189- networking.dhcpcd.denyInterfaces = cfg.denyDhcpcdInterfaces;
190- networking.firewall.allowedUDPPorts = mkIf cfg.openMulticastPort [ 9001 ];
191192- # Make yggdrasilctl available on the command line.
193- environment.systemPackages = [ cfg.package ];
194- });
0195 meta = {
196 doc = ./yggdrasil.md;
197 maintainers = with lib.maintainers; [ gazally ehmry ];
···8 configFileProvided = cfg.configFile != null;
910 format = pkgs.formats.json { };
11+in
12+{
13 imports = [
14 (mkRenamedOptionModule
15 [ "services" "yggdrasil" "config" ]
···2223 settings = mkOption {
24 type = format.type;
25+ default = { };
26 example = {
27 Peers = [
28 "tcp://aa.bb.cc.dd:eeeee"
···4647 If no keys are specified then ephemeral keys are generated
48 and the Yggdrasil interface will have a random IPv6 address
49+ each time the service is started. This is the default.
5051 If both {option}`configFile` and {option}`settings`
52 are supplied, they will be combined, with values from
···62 default = null;
63 example = "/run/keys/yggdrasil.conf";
64 description = lib.mdDoc ''
65+ A file which contains JSON or HJSON configuration for yggdrasil. See
66+ the {option}`settings` option for more information.
67+68+ Note: This file must not be larger than 1 MB because it is passed to
69+ the yggdrasil process via systemd‘s LoadCredential mechanism. For
70+ details, see <https://systemd.io/CREDENTIALS/> and `man 5
71+ systemd.exec`.
72 '';
73 };
74···83 type = bool;
84 default = false;
85 description = lib.mdDoc ''
86+ Whether to open the UDP port used for multicast peer discovery. The
87+ NixOS firewall blocks link-local communication, so in order to make
88+ incoming local peering work you will also need to configure
89+ `MulticastInterfaces` in your Yggdrasil configuration
90+ ({option}`settings` or {option}`configFile`). You will then have to
91+ add the ports that you configure there to your firewall configuration
92+ ({option}`networking.firewall.allowedTCPPorts` or
93+ {option}`networking.firewall.interfaces.<name>.allowedTCPPorts`).
94 '';
95 };
9697 denyDhcpcdInterfaces = mkOption {
98 type = listOf str;
99+ default = [ ];
100 example = [ "tap*" ];
101 description = lib.mdDoc ''
102 Disable the DHCP client for any interface whose name matches
···124 };
125 };
126127+ config = mkIf cfg.enable (
128+ let
129+ binYggdrasil = "${cfg.package}/bin/yggdrasil";
130+ binHjson = "${pkgs.hjson-go}/bin/hjson-cli";
131+ in
132+ {
133+ assertions = [{
134+ assertion = config.networking.enableIPv6;
135+ message = "networking.enableIPv6 must be true for yggdrasil to work";
136+ }];
137138+ system.activationScripts.yggdrasil = mkIf cfg.persistentKeys ''
139+ if [ ! -e ${keysPath} ]
140+ then
141+ mkdir --mode=700 -p ${builtins.dirOf keysPath}
142+ ${binYggdrasil} -genconf -json \
143+ | ${pkgs.jq}/bin/jq \
144+ 'to_entries|map(select(.key|endswith("Key")))|from_entries' \
145+ > ${keysPath}
146+ fi
147+ '';
148149+ systemd.services.yggdrasil = {
150+ description = "Yggdrasil Network Service";
151+ after = [ "network-pre.target" ];
152+ wants = [ "network.target" ];
153+ before = [ "network.target" ];
154+ wantedBy = [ "multi-user.target" ];
155156+ # This script first prepares the config file, then it starts Yggdrasil.
157+ # The preparation could also be done in ExecStartPre/preStart but only
158+ # systemd versions >= v252 support reading credentials in ExecStartPre. As
159+ # of February 2023, systemd v252 is not yet in the stable branch of NixOS.
160+ #
161+ # This could be changed in the future once systemd version v252 has
162+ # reached NixOS but it does not have to be. Config file preparation is
163+ # fast enough, it does not need elevated privileges, and `set -euo
164+ # pipefail` should make sure that the service is not started if the
165+ # preparation fails. Therefore, it is not necessary to move the
166+ # preparation to ExecStartPre.
167+ script = ''
168+ set -euo pipefail
169170+ # prepare config file
171+ ${(if settingsProvided || configFileProvided || cfg.persistentKeys then
172+ "echo "
173+174+ + (lib.optionalString settingsProvided
175+ "'${builtins.toJSON cfg.settings}'")
176+ + (lib.optionalString configFileProvided
177+ "$(${binHjson} -c \"$CREDENTIALS_DIRECTORY/yggdrasil.conf\")")
178+ + (lib.optionalString cfg.persistentKeys "$(cat ${keysPath})")
179+ + " | ${pkgs.jq}/bin/jq -s add | ${binYggdrasil} -normaliseconf -useconf"
180+ else
181+ "${binYggdrasil} -genconf") + " > /run/yggdrasil/yggdrasil.conf"}
182+183+ # start yggdrasil
184+ ${binYggdrasil} -useconffile /run/yggdrasil/yggdrasil.conf
185+ '';
186187+ serviceConfig = {
188+ ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
189+ Restart = "always";
00190191+ DynamicUser = true;
192+ StateDirectory = "yggdrasil";
193+ RuntimeDirectory = "yggdrasil";
194+ RuntimeDirectoryMode = "0750";
195+ BindReadOnlyPaths = lib.optional cfg.persistentKeys keysPath;
196+ LoadCredential =
197+ mkIf configFileProvided "yggdrasil.conf:${cfg.configFile}";
198199+ AmbientCapabilities = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
200+ CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
201+ MemoryDenyWriteExecute = true;
202+ ProtectControlGroups = true;
203+ ProtectHome = "tmpfs";
204+ ProtectKernelModules = true;
205+ ProtectKernelTunables = true;
206+ RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
207+ RestrictNamespaces = true;
208+ RestrictRealtime = true;
209+ SystemCallArchitectures = "native";
210+ SystemCallFilter = [ "@system-service" "~@privileged @keyring" ];
211+ } // (if (cfg.group != null) then {
212+ Group = cfg.group;
213+ } else { });
214+ };
215216+ networking.dhcpcd.denyInterfaces = cfg.denyDhcpcdInterfaces;
217+ networking.firewall.allowedUDPPorts = mkIf cfg.openMulticastPort [ 9001 ];
218219+ # Make yggdrasilctl available on the command line.
220+ environment.systemPackages = [ cfg.package ];
221+ }
222+ );
223 meta = {
224 doc = ./yggdrasil.md;
225 maintainers = with lib.maintainers; [ gazally ehmry ];
+1-1
nixos/modules/services/web-apps/nextcloud.md
···5[services.nextcloud](#opt-services.nextcloud.enable). A
6desktop client is packaged at `pkgs.nextcloud-client`.
78-The current default by NixOS is `nextcloud25` which is also the latest
9major version available.
1011## Basic usage {#module-services-nextcloud-basic-usage}
···5[services.nextcloud](#opt-services.nextcloud.enable). A
6desktop client is packaged at `pkgs.nextcloud-client`.
78+The current default by NixOS is `nextcloud26` which is also the latest
9major version available.
1011## Basic usage {#module-services-nextcloud-basic-usage}
+11-39
nixos/modules/services/web-apps/nextcloud.nix
···204 package = mkOption {
205 type = types.package;
206 description = lib.mdDoc "Which package to use for the Nextcloud instance.";
207- relatedPackages = [ "nextcloud24" "nextcloud25" ];
208 };
209 phpPackage = mkOption {
210 type = types.package;
···673674 config = mkIf cfg.enable (mkMerge [
675 { warnings = let
676- latest = 25;
677 upgradeWarning = major: nixos:
678 ''
679 A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···688 `services.nextcloud.package`.
689 '';
690691- # FIXME(@Ma27) remove as soon as nextcloud properly supports
692- # mariadb >=10.6.
693- isUnsupportedMariadb =
694- # All currently supported Nextcloud versions are affected (https://github.com/nextcloud/server/issues/25436).
695- (versionOlder cfg.package.version "24")
696- # This module uses mysql
697- && (cfg.config.dbtype == "mysql")
698- # MySQL is managed via NixOS
699- && config.services.mysql.enable
700- # We're using MariaDB
701- && (getName config.services.mysql.package) == "mariadb-server"
702- # MariaDB is at least 10.6 and thus not supported
703- && (versionAtLeast (getVersion config.services.mysql.package) "10.6");
704-705 in (optional (cfg.poolConfig != null) ''
706 Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
707 Please migrate your configuration to config.services.nextcloud.poolSettings.
···709 ++ (optional (versionOlder cfg.package.version "23") (upgradeWarning 22 "22.05"))
710 ++ (optional (versionOlder cfg.package.version "24") (upgradeWarning 23 "22.05"))
711 ++ (optional (versionOlder cfg.package.version "25") (upgradeWarning 24 "22.11"))
0712 ++ (optional cfg.enableBrokenCiphersForSSE ''
713 You're using PHP's openssl extension built against OpenSSL 1.1 for Nextcloud.
714 This is only necessary if you're using Nextcloud's server-side encryption.
···725 See <https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html#disabling-encryption> on how to achieve this.
726727 For more context, here is the implementing pull request: https://github.com/NixOS/nixpkgs/pull/198470
728- '')
729- ++ (optional isUnsupportedMariadb ''
730- You seem to be using MariaDB at an unsupported version (i.e. at least 10.6)!
731- Please note that this isn't supported officially by Nextcloud. You can either
732-733- * Switch to `pkgs.mysql`
734- * Downgrade MariaDB to at least 10.5
735- * Work around Nextcloud's problems by specifying `innodb_read_only_compressed=0`
736-737- For further context, please read
738- https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/15
739- '');
740741 services.nextcloud.package = with pkgs;
742 mkDefault (
···747 `pkgs.nextcloud`.
748 ''
749 else if versionOlder stateVersion "22.11" then nextcloud24
750- else nextcloud25
0751 );
752753 services.nextcloud.phpPackage =
754- if versionOlder cfg.package.version "24" then pkgs.php80
755- else pkgs.php81;
756 }
757758 { assertions = [
···980 '';
981 serviceConfig.Type = "oneshot";
982 serviceConfig.User = "nextcloud";
000983 };
984 nextcloud-cron = {
985 after = [ "nextcloud-setup.service" ];
···1031 name = cfg.config.dbuser;
1032 ensurePermissions = { "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; };
1033 }];
1034- # FIXME(@Ma27) Nextcloud isn't compatible with mariadb 10.6,
1035- # this is a workaround.
1036- # See https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/22
1037- settings = mkIf (versionOlder cfg.package.version "24") {
1038- mysqld = {
1039- innodb_read_only_compressed = 0;
1040- };
1041- };
1042 initialScript = pkgs.writeText "mysql-init" ''
1043 CREATE USER '${cfg.config.dbname}'@'localhost' IDENTIFIED BY '${builtins.readFile( cfg.config.dbpassFile )}';
1044 CREATE DATABASE IF NOT EXISTS ${cfg.config.dbname};
···204 package = mkOption {
205 type = types.package;
206 description = lib.mdDoc "Which package to use for the Nextcloud instance.";
207+ relatedPackages = [ "nextcloud24" "nextcloud25" "nextcloud26" ];
208 };
209 phpPackage = mkOption {
210 type = types.package;
···673674 config = mkIf cfg.enable (mkMerge [
675 { warnings = let
676+ latest = 26;
677 upgradeWarning = major: nixos:
678 ''
679 A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···688 `services.nextcloud.package`.
689 '';
69000000000000000691 in (optional (cfg.poolConfig != null) ''
692 Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
693 Please migrate your configuration to config.services.nextcloud.poolSettings.
···695 ++ (optional (versionOlder cfg.package.version "23") (upgradeWarning 22 "22.05"))
696 ++ (optional (versionOlder cfg.package.version "24") (upgradeWarning 23 "22.05"))
697 ++ (optional (versionOlder cfg.package.version "25") (upgradeWarning 24 "22.11"))
698+ ++ (optional (versionOlder cfg.package.version "26") (upgradeWarning 25 "23.05"))
699 ++ (optional cfg.enableBrokenCiphersForSSE ''
700 You're using PHP's openssl extension built against OpenSSL 1.1 for Nextcloud.
701 This is only necessary if you're using Nextcloud's server-side encryption.
···712 See <https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html#disabling-encryption> on how to achieve this.
713714 For more context, here is the implementing pull request: https://github.com/NixOS/nixpkgs/pull/198470
715+ '');
00000000000716717 services.nextcloud.package = with pkgs;
718 mkDefault (
···723 `pkgs.nextcloud`.
724 ''
725 else if versionOlder stateVersion "22.11" then nextcloud24
726+ else if versionOlder stateVersion "23.05" then nextcloud25
727+ else nextcloud26
728 );
729730 services.nextcloud.phpPackage =
731+ if versionOlder cfg.package.version "26" then pkgs.php81
732+ else pkgs.php82;
733 }
734735 { assertions = [
···957 '';
958 serviceConfig.Type = "oneshot";
959 serviceConfig.User = "nextcloud";
960+ # On Nextcloud ≥ 26, it is not necessary to patch the database files to prevent
961+ # an automatic creation of the database user.
962+ environment.NC_setup_create_db_user = lib.mkIf (nextcloudGreaterOrEqualThan "26") "false";
963 };
964 nextcloud-cron = {
965 after = [ "nextcloud-setup.service" ];
···1011 name = cfg.config.dbuser;
1012 ensurePermissions = { "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; };
1013 }];
000000001014 initialScript = pkgs.writeText "mysql-init" ''
1015 CREATE USER '${cfg.config.dbname}'@'localhost' IDENTIFIED BY '${builtins.readFile( cfg.config.dbpassFile )}';
1016 CREATE DATABASE IF NOT EXISTS ${cfg.config.dbname};
+1094
nixos/modules/system/boot/networkd.nix
···303304 sectionTap = checkUnitConfig "Tap" tunChecks;
305000000000000000000000000000000000000000000306 # NOTE The PrivateKey directive is missing on purpose here, please
307 # do not add it to this list. The nix store is world-readable let's
308 # refrain ourselves from providing a footgun.
···918 (assertMacAddress "MACAddress")
919 ];
92000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000921 };
922 };
923···10121013 };
10140000000000000001015 wireguardPeerOptions = {
1016 options = {
1017 wireguardPeerConfig = mkOption {
···1125 '';
1126 };
1127000000000000000000000000000000001128 wireguardConfig = mkOption {
1129 default = {};
1130 example = {
···1306 };
1307 };
13080000000000000000000000000000000000000000000001309 networkOptions = commonNetworkOptions // {
13101311 linkConfig = mkOption {
···1445 '';
1446 };
14470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001448 name = mkOption {
1449 type = types.nullOr types.str;
1450 default = null;
···1705 [Tap]
1706 ${attrsToSection def.tapConfig}
1707 ''
000000001708 + optionalString (def.wireguardConfig != { }) ''
1709 [WireGuard]
1710 ${attrsToSection def.wireguardConfig}
···1843 + flip concatMapStrings def.dhcpServerStaticLeases (x: ''
1844 [DHCPServerStaticLease]
1845 ${attrsToSection x.dhcpServerStaticLeaseConfig}
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001846 '')
1847 + def.extraConfig;
1848 };
···303304 sectionTap = checkUnitConfig "Tap" tunChecks;
305306+ sectionL2TP = checkUnitConfig "L2TP" [
307+ (assertOnlyFields [
308+ "TunnelId"
309+ "PeerTunnelId"
310+ "Remote"
311+ "Local"
312+ "EncapsulationType"
313+ "UDPSourcePort"
314+ "UDPDestinationPort"
315+ "UDPChecksum"
316+ "UDP6ZeroChecksumTx"
317+ "UDP6ZeroChecksumRx"
318+ ])
319+ (assertInt "TunnelId")
320+ (assertRange "TunnelId" 1 4294967295)
321+ (assertInt "PeerTunnelId")
322+ (assertRange "PeerTunnelId" 1 4294967295)
323+ (assertValueOneOf "EncapsulationType" [ "ip" "udp" ])
324+ (assertPort "UDPSourcePort")
325+ (assertPort "UDPDestinationPort")
326+ (assertValueOneOf "UDPChecksum" boolValues)
327+ (assertValueOneOf "UDP6ZeroChecksumTx" boolValues)
328+ (assertValueOneOf "UDP6ZeroChecksumRx" boolValues)
329+ ];
330+331+ sectionL2TPSession = checkUnitConfig "L2TPSession" [
332+ (assertOnlyFields [
333+ "Name"
334+ "SessionId"
335+ "PeerSessionId"
336+ "Layer2SpecificHeader"
337+ ])
338+ (assertHasField "Name")
339+ (assertHasField "SessionId")
340+ (assertInt "SessionId")
341+ (assertRange "SessionId" 1 4294967295)
342+ (assertHasField "PeerSessionId")
343+ (assertInt "PeerSessionId")
344+ (assertRange "PeerSessionId" 1 4294967295)
345+ (assertValueOneOf "Layer2SpecificHeader" [ "none" "default" ])
346+ ];
347+348 # NOTE The PrivateKey directive is missing on purpose here, please
349 # do not add it to this list. The nix store is world-readable let's
350 # refrain ourselves from providing a footgun.
···960 (assertMacAddress "MACAddress")
961 ];
962963+ sectionBridge = checkUnitConfig "Bridge" [
964+ (assertOnlyFields [
965+ "UnicastFlood"
966+ "MulticastFlood"
967+ "MulticastToUnicast"
968+ "NeighborSuppression"
969+ "Learning"
970+ "Hairpin"
971+ "Isolated"
972+ "UseBPDU"
973+ "FastLeave"
974+ "AllowPortToBeRoot"
975+ "ProxyARP"
976+ "ProxyARPWiFi"
977+ "MulticastRouter"
978+ "Cost"
979+ "Priority"
980+ ])
981+ (assertValueOneOf "UnicastFlood" boolValues)
982+ (assertValueOneOf "MulticastFlood" boolValues)
983+ (assertValueOneOf "MulticastToUnicast" boolValues)
984+ (assertValueOneOf "NeighborSuppression" boolValues)
985+ (assertValueOneOf "Learning" boolValues)
986+ (assertValueOneOf "Hairpin" boolValues)
987+ (assertValueOneOf "Isolated" boolValues)
988+ (assertValueOneOf "UseBPDU" boolValues)
989+ (assertValueOneOf "FastLeave" boolValues)
990+ (assertValueOneOf "AllowPortToBeRoot" boolValues)
991+ (assertValueOneOf "ProxyARP" boolValues)
992+ (assertValueOneOf "ProxyARPWiFi" boolValues)
993+ (assertValueOneOf "MulticastRouter" [ "no" "query" "permanent" "temporary" ])
994+ (assertInt "Cost")
995+ (assertRange "Cost" 1 65535)
996+ (assertInt "Priority")
997+ (assertRange "Priority" 0 63)
998+ ];
999+1000+ sectionBridgeFDB = checkUnitConfig "BridgeFDB" [
1001+ (assertOnlyFields [
1002+ "MACAddress"
1003+ "Destination"
1004+ "VLANId"
1005+ "VNI"
1006+ "AssociatedWith"
1007+ "OutgoingInterface"
1008+ ])
1009+ (assertHasField "MACAddress")
1010+ (assertInt "VLANId")
1011+ (assertRange "VLANId" 0 4094)
1012+ (assertInt "VNI")
1013+ (assertRange "VNI" 1 16777215)
1014+ (assertValueOneOf "AssociatedWith" [ "use" "self" "master" "router" ])
1015+ ];
1016+1017+ sectionBridgeMDB = checkUnitConfig "BridgeMDB" [
1018+ (assertOnlyFields [
1019+ "MulticastGroupAddress"
1020+ "VLANId"
1021+ ])
1022+ (assertHasField "MulticastGroupAddress")
1023+ (assertInt "VLANId")
1024+ (assertRange "VLANId" 0 4094)
1025+ ];
1026+1027+ sectionLLDP = checkUnitConfig "LLDP" [
1028+ (assertOnlyFields [
1029+ "MUDURL"
1030+ ])
1031+ ];
1032+1033+ sectionCAN = checkUnitConfig "CAN" [
1034+ (assertOnlyFields [
1035+ "BitRate"
1036+ "SamplePoint"
1037+ "TimeQuantaNSec"
1038+ "PropagationSegment"
1039+ "PhaseBufferSegment1"
1040+ "PhaseBufferSegment2"
1041+ "SyncJumpWidth"
1042+ "DataBitRate"
1043+ "DataSamplePoint"
1044+ "DataTimeQuantaNSec"
1045+ "DataPropagationSegment"
1046+ "DataPhaseBufferSegment1"
1047+ "DataPhaseBufferSegment2"
1048+ "DataSyncJumpWidth"
1049+ "FDMode"
1050+ "FDNonISO"
1051+ "RestartSec"
1052+ "Termination"
1053+ "TripleSampling"
1054+ "BusErrorReporting"
1055+ "ListenOnly"
1056+ "Loopback"
1057+ "OneShot"
1058+ "PresumeAck"
1059+ "ClassicDataLengthCode"
1060+ ])
1061+ (assertInt "TimeQuantaNSec" )
1062+ (assertRange "TimeQuantaNSec" 0 4294967295 )
1063+ (assertInt "PropagationSegment" )
1064+ (assertRange "PropagationSegment" 0 4294967295 )
1065+ (assertInt "PhaseBufferSegment1" )
1066+ (assertRange "PhaseBufferSegment1" 0 4294967295 )
1067+ (assertInt "PhaseBufferSegment2" )
1068+ (assertRange "PhaseBufferSegment2" 0 4294967295 )
1069+ (assertInt "SyncJumpWidth" )
1070+ (assertRange "SyncJumpWidth" 0 4294967295 )
1071+ (assertInt "DataTimeQuantaNSec" )
1072+ (assertRange "DataTimeQuantaNSec" 0 4294967295 )
1073+ (assertInt "DataPropagationSegment" )
1074+ (assertRange "DataPropagationSegment" 0 4294967295 )
1075+ (assertInt "DataPhaseBufferSegment1" )
1076+ (assertRange "DataPhaseBufferSegment1" 0 4294967295 )
1077+ (assertInt "DataPhaseBufferSegment2" )
1078+ (assertRange "DataPhaseBufferSegment2" 0 4294967295 )
1079+ (assertInt "DataSyncJumpWidth" )
1080+ (assertRange "DataSyncJumpWidth" 0 4294967295 )
1081+ (assertValueOneOf "FDMode" boolValues)
1082+ (assertValueOneOf "FDNonISO" boolValues)
1083+ (assertValueOneOf "TripleSampling" boolValues)
1084+ (assertValueOneOf "BusErrorReporting" boolValues)
1085+ (assertValueOneOf "ListenOnly" boolValues)
1086+ (assertValueOneOf "Loopback" boolValues)
1087+ (assertValueOneOf "OneShot" boolValues)
1088+ (assertValueOneOf "PresumeAck" boolValues)
1089+ (assertValueOneOf "ClassicDataLengthCode" boolValues)
1090+ ];
1091+1092+ sectionIPoIB = checkUnitConfig "IPoIB" [
1093+ (assertOnlyFields [
1094+ "Mode"
1095+ "IgnoreUserspaceMulticastGroup"
1096+ ])
1097+ (assertValueOneOf "Mode" [ "datagram" "connected" ])
1098+ (assertValueOneOf "IgnoreUserspaceMulticastGroup" boolValues)
1099+ ];
1100+1101+ sectionQDisc = checkUnitConfig "QDisc" [
1102+ (assertOnlyFields [
1103+ "Parent"
1104+ "Handle"
1105+ ])
1106+ (assertValueOneOf "Parent" [ "clsact" "ingress" ])
1107+ ];
1108+1109+ sectionNetworkEmulator = checkUnitConfig "NetworkEmulator" [
1110+ (assertOnlyFields [
1111+ "Parent"
1112+ "Handle"
1113+ "DelaySec"
1114+ "DelayJitterSec"
1115+ "PacketLimit"
1116+ "LossRate"
1117+ "DuplicateRate"
1118+ ])
1119+ (assertInt "PacketLimit")
1120+ (assertRange "PacketLimit" 0 4294967294)
1121+ ];
1122+1123+ sectionTokenBucketFilter = checkUnitConfig "TokenBucketFilter" [
1124+ (assertOnlyFields [
1125+ "Parent"
1126+ "Handle"
1127+ "LatencySec"
1128+ "LimitBytes"
1129+ "BurstBytes"
1130+ "Rate"
1131+ "MPUBytes"
1132+ "PeakRate"
1133+ "MTUBytes"
1134+ ])
1135+ ];
1136+1137+ sectionPIE = checkUnitConfig "PIE" [
1138+ (assertOnlyFields [
1139+ "Parent"
1140+ "Handle"
1141+ "PacketLimit"
1142+ ])
1143+ (assertInt "PacketLimit")
1144+ (assertRange "PacketLimit" 1 4294967294)
1145+ ];
1146+1147+ sectionFlowQueuePIE = checkUnitConfig "FlowQueuePIE" [
1148+ (assertOnlyFields [
1149+ "Parent"
1150+ "Handle"
1151+ "PacketLimit"
1152+ ])
1153+ (assertInt "PacketLimit")
1154+ (assertRange "PacketLimit" 1 4294967294)
1155+ ];
1156+1157+ sectionStochasticFairBlue = checkUnitConfig "StochasticFairBlue" [
1158+ (assertOnlyFields [
1159+ "Parent"
1160+ "Handle"
1161+ "PacketLimit"
1162+ ])
1163+ (assertInt "PacketLimit")
1164+ (assertRange "PacketLimit" 1 4294967294)
1165+ ];
1166+1167+ sectionStochasticFairnessQueueing = checkUnitConfig "StochasticFairnessQueueing" [
1168+ (assertOnlyFields [
1169+ "Parent"
1170+ "Handle"
1171+ "PerturbPeriodSec"
1172+ ])
1173+ (assertInt "PerturbPeriodSec")
1174+ ];
1175+1176+ sectionBFIFO = checkUnitConfig "BFIFO" [
1177+ (assertOnlyFields [
1178+ "Parent"
1179+ "Handle"
1180+ "LimitBytes"
1181+ ])
1182+ ];
1183+1184+ sectionPFIFO = checkUnitConfig "PFIFO" [
1185+ (assertOnlyFields [
1186+ "Parent"
1187+ "Handle"
1188+ "PacketLimit"
1189+ ])
1190+ (assertInt "PacketLimit")
1191+ (assertRange "PacketLimit" 0 4294967294)
1192+ ];
1193+1194+ sectionPFIFOHeadDrop = checkUnitConfig "PFIFOHeadDrop" [
1195+ (assertOnlyFields [
1196+ "Parent"
1197+ "Handle"
1198+ "PacketLimit"
1199+ ])
1200+ (assertInt "PacketLimit")
1201+ (assertRange "PacketLimit" 0 4294967294)
1202+ ];
1203+1204+ sectionPFIFOFast = checkUnitConfig "PFIFOFast" [
1205+ (assertOnlyFields [
1206+ "Parent"
1207+ "Handle"
1208+ ])
1209+ ];
1210+1211+ sectionCAKE = checkUnitConfig "CAKE" [
1212+ (assertOnlyFields [
1213+ "Parent"
1214+ "Handle"
1215+ "Bandwidth"
1216+ "AutoRateIngress"
1217+ "OverheadBytes"
1218+ "MPUBytes"
1219+ "CompensationMode"
1220+ "UseRawPacketSize"
1221+ "FlowIsolationMode"
1222+ "NAT"
1223+ "PriorityQueueingPreset"
1224+ "FirewallMark"
1225+ "Wash"
1226+ "SplitGSO"
1227+ ])
1228+ (assertValueOneOf "AutoRateIngress" boolValues)
1229+ (assertInt "OverheadBytes")
1230+ (assertRange "OverheadBytes" (-64) 256)
1231+ (assertInt "MPUBytes")
1232+ (assertRange "MPUBytes" 1 256)
1233+ (assertValueOneOf "CompensationMode" [ "none" "atm" "ptm" ])
1234+ (assertValueOneOf "UseRawPacketSize" boolValues)
1235+ (assertValueOneOf "FlowIsolationMode"
1236+ [
1237+ "none"
1238+ "src-host"
1239+ "dst-host"
1240+ "hosts"
1241+ "flows"
1242+ "dual-src-host"
1243+ "dual-dst-host"
1244+ "triple"
1245+ ])
1246+ (assertValueOneOf "NAT" boolValues)
1247+ (assertValueOneOf "PriorityQueueingPreset"
1248+ [
1249+ "besteffort"
1250+ "precedence"
1251+ "diffserv8"
1252+ "diffserv4"
1253+ "diffserv3"
1254+ ])
1255+ (assertInt "FirewallMark")
1256+ (assertRange "FirewallMark" 1 4294967295)
1257+ (assertValueOneOf "Wash" boolValues)
1258+ (assertValueOneOf "SplitGSO" boolValues)
1259+ ];
1260+1261+ sectionControlledDelay = checkUnitConfig "ControlledDelay" [
1262+ (assertOnlyFields [
1263+ "Parent"
1264+ "Handle"
1265+ "PacketLimit"
1266+ "TargetSec"
1267+ "IntervalSec"
1268+ "ECN"
1269+ "CEThresholdSec"
1270+ ])
1271+ (assertValueOneOf "ECN" boolValues)
1272+ ];
1273+1274+ sectionDeficitRoundRobinScheduler = checkUnitConfig "DeficitRoundRobinScheduler" [
1275+ (assertOnlyFields [
1276+ "Parent"
1277+ "Handle"
1278+ ])
1279+ ];
1280+1281+ sectionDeficitRoundRobinSchedulerClass = checkUnitConfig "DeficitRoundRobinSchedulerClass" [
1282+ (assertOnlyFields [
1283+ "Parent"
1284+ "Handle"
1285+ "QuantumBytes"
1286+ ])
1287+ ];
1288+1289+ sectionEnhancedTransmissionSelection = checkUnitConfig "EnhancedTransmissionSelection" [
1290+ (assertOnlyFields [
1291+ "Parent"
1292+ "Handle"
1293+ "Bands"
1294+ "StrictBands"
1295+ "QuantumBytes"
1296+ "PriorityMap"
1297+ ])
1298+ (assertInt "Bands")
1299+ (assertRange "Bands" 1 16)
1300+ (assertInt "StrictBands")
1301+ (assertRange "StrictBands" 1 16)
1302+ ];
1303+1304+ sectionGenericRandomEarlyDetection = checkUnitConfig "GenericRandomEarlyDetection" [
1305+ (assertOnlyFields [
1306+ "Parent"
1307+ "Handle"
1308+ "VirtualQueues"
1309+ "DefaultVirtualQueue"
1310+ "GenericRIO"
1311+ ])
1312+ (assertInt "VirtualQueues")
1313+ (assertRange "VirtualQueues" 1 16)
1314+ (assertInt "DefaultVirtualQueue")
1315+ (assertRange "DefaultVirtualQueue" 1 16)
1316+ (assertValueOneOf "GenericRIO" boolValues)
1317+ ];
1318+1319+ sectionFairQueueingControlledDelay = checkUnitConfig "FairQueueingControlledDelay" [
1320+ (assertOnlyFields [
1321+ "Parent"
1322+ "Handle"
1323+ "PacketLimit"
1324+ "MemoryLimitBytes"
1325+ "Flows"
1326+ "TargetSec"
1327+ "IntervalSec"
1328+ "QuantumBytes"
1329+ "ECN"
1330+ "CEThresholdSec"
1331+ ])
1332+ (assertInt "PacketLimit")
1333+ (assertInt "Flows")
1334+ (assertValueOneOf "ECN" boolValues)
1335+ ];
1336+1337+ sectionFairQueueing = checkUnitConfig "FairQueueing" [
1338+ (assertOnlyFields [
1339+ "Parent"
1340+ "Handle"
1341+ "PacketLimit"
1342+ "FlowLimit"
1343+ "QuantumBytes"
1344+ "InitualQuantumBytes"
1345+ "MaximumRate"
1346+ "Buckets"
1347+ "OrphanMask"
1348+ "Pacing"
1349+ "CEThresholdSec"
1350+ ])
1351+ (assertInt "PacketLimit")
1352+ (assertInt "FlowLimit")
1353+ (assertInt "OrphanMask")
1354+ (assertValueOneOf "Pacing" boolValues)
1355+ ];
1356+1357+ sectionTrivialLinkEqualizer = checkUnitConfig "TrivialLinkEqualizer" [
1358+ (assertOnlyFields [
1359+ "Parent"
1360+ "Handle"
1361+ "Id"
1362+ ])
1363+ ];
1364+1365+ sectionHierarchyTokenBucket = checkUnitConfig "HierarchyTokenBucket" [
1366+ (assertOnlyFields [
1367+ "Parent"
1368+ "Handle"
1369+ "DefaultClass"
1370+ "RateToQuantum"
1371+ ])
1372+ (assertInt "RateToQuantum")
1373+ ];
1374+1375+ sectionHierarchyTokenBucketClass = checkUnitConfig "HierarchyTokenBucketClass" [
1376+ (assertOnlyFields [
1377+ "Parent"
1378+ "ClassId"
1379+ "Priority"
1380+ "QuantumBytes"
1381+ "MTUBytes"
1382+ "OverheadBytes"
1383+ "Rate"
1384+ "CeilRate"
1385+ "BufferBytes"
1386+ "CeilBufferBytes"
1387+ ])
1388+ ];
1389+1390+ sectionHeavyHitterFilter = checkUnitConfig "HeavyHitterFilter" [
1391+ (assertOnlyFields [
1392+ "Parent"
1393+ "Handle"
1394+ "PacketLimit"
1395+ ])
1396+ (assertInt "PacketLimit")
1397+ (assertRange "PacketLimit" 0 4294967294)
1398+ ];
1399+1400+ sectionQuickFairQueueing = checkUnitConfig "QuickFairQueueing" [
1401+ (assertOnlyFields [
1402+ "Parent"
1403+ "Handle"
1404+ ])
1405+ ];
1406+1407+ sectionQuickFairQueueingClass = checkUnitConfig "QuickFairQueueingClass" [
1408+ (assertOnlyFields [
1409+ "Parent"
1410+ "ClassId"
1411+ "Weight"
1412+ "MaxPacketBytes"
1413+ ])
1414+ (assertInt "Weight")
1415+ (assertRange "Weight" 1 1023)
1416+ ];
1417+1418+ sectionBridgeVLAN = checkUnitConfig "BridgeVLAN" [
1419+ (assertOnlyFields [
1420+ "VLAN"
1421+ "EgressUntagged"
1422+ "PVID"
1423+ ])
1424+ (assertInt "PVID")
1425+ (assertRange "PVID" 0 4094)
1426+ ];
1427 };
1428 };
1429···15181519 };
15201521+1522+ l2tpSessionOptions = {
1523+ options = {
1524+ l2tpSessionConfig = mkOption {
1525+ default = {};
1526+ type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionL2TPSession;
1527+ description = lib.mdDoc ''
1528+ Each attribute in this set specifies an option in the
1529+ `[L2TPSession]` section of the unit. See
1530+ {manpage}`systemd.netdev(5)` for details.
1531+ '';
1532+ };
1533+ };
1534+ };
1535+1536 wireguardPeerOptions = {
1537 options = {
1538 wireguardPeerConfig = mkOption {
···1646 '';
1647 };
16481649+ l2tpConfig = mkOption {
1650+ default = {};
1651+ example = {
1652+ TunnelId = 10;
1653+ PeerTunnelId = 12;
1654+ Local = "static";
1655+ Remote = "192.168.30.101";
1656+ EncapsulationType = "ip";
1657+ };
1658+ type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionL2TP;
1659+ description = lib.mdDoc ''
1660+ Each attribute in this set specifies an option in the
1661+ `[L2TP]` section of the unit. See
1662+ {manpage}`systemd.netdev(5)` for details.
1663+ '';
1664+ };
1665+1666+ l2tpSessions = mkOption {
1667+ default = [];
1668+ example = [ { l2tpSessionConfig={
1669+ SessionId = 25;
1670+ PeerSessionId = 26;
1671+ Name = "l2tp-sess";
1672+ };}];
1673+ type = with types; listOf (submodule l2tpSessionOptions);
1674+ description = lib.mdDoc ''
1675+ Each item in this array specifies an option in the
1676+ `[L2TPSession]` section of the unit. See
1677+ {manpage}`systemd.netdev(5)` for details.
1678+ '';
1679+ };
1680+1681 wireguardConfig = mkOption {
1682 default = {};
1683 example = {
···1859 };
1860 };
18611862+ bridgeFDBOptions = {
1863+ options = {
1864+ bridgeFDBConfig = mkOption {
1865+ default = {};
1866+ example = { MACAddress = "65:43:4a:5b:d8:5f"; Destination = "192.168.1.42"; VNI = 20; };
1867+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeFDB;
1868+ description = lib.mdDoc ''
1869+ Each attribute in this set specifies an option in the
1870+ `[BridgeFDB]` section of the unit. See
1871+ {manpage}`systemd.network(5)` for details.
1872+ '';
1873+ };
1874+ };
1875+ };
1876+1877+ bridgeMDBOptions = {
1878+ options = {
1879+ bridgeMDBConfig = mkOption {
1880+ default = {};
1881+ example = { MulticastGroupAddress = "ff02::1:2:3:4"; VLANId = 10; };
1882+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeMDB;
1883+ description = lib.mdDoc ''
1884+ Each attribute in this set specifies an option in the
1885+ `[BridgeMDB]` section of the unit. See
1886+ {manpage}`systemd.network(5)` for details.
1887+ '';
1888+ };
1889+ };
1890+ };
1891+1892+ bridgeVLANOptions = {
1893+ options = {
1894+ bridgeMDBConfig = mkOption {
1895+ default = {};
1896+ example = { VLAN = 20; };
1897+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
1898+ description = lib.mdDoc ''
1899+ Each attribute in this set specifies an option in the
1900+ `[BridgeVLAN]` section of the unit. See
1901+ {manpage}`systemd.network(5)` for details.
1902+ '';
1903+ };
1904+ };
1905+ };
1906+1907 networkOptions = commonNetworkOptions // {
19081909 linkConfig = mkOption {
···2043 '';
2044 };
20452046+ bridgeConfig = mkOption {
2047+ default = {};
2048+ example = { MulticastFlood = false; Cost = 20; };
2049+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridge;
2050+ description = lib.mdDoc ''
2051+ Each attribute in this set specifies an option in the
2052+ `[Bridge]` section of the unit. See
2053+ {manpage}`systemd.network(5)` for details.
2054+ '';
2055+ };
2056+2057+ bridgeFDBs = mkOption {
2058+ default = [];
2059+ example = [ { bridgeFDBConfig = { MACAddress = "90:e2:ba:43:fc:71"; Destination = "192.168.100.4"; VNI = 3600; }; } ];
2060+ type = with types; listOf (submodule bridgeFDBOptions);
2061+ description = lib.mdDoc ''
2062+ A list of BridgeFDB sections to be added to the unit. See
2063+ {manpage}`systemd.network(5)` for details.
2064+ '';
2065+ };
2066+2067+ bridgeMDBs = mkOption {
2068+ default = [];
2069+ example = [ { bridgeMDBConfig = { MulticastGroupAddress = "ff02::1:2:3:4"; VLANId = 10; } ; } ];
2070+ type = with types; listOf (submodule bridgeMDBOptions);
2071+ description = lib.mdDoc ''
2072+ A list of BridgeMDB sections to be added to the unit. See
2073+ {manpage}`systemd.network(5)` for details.
2074+ '';
2075+ };
2076+2077+ lldpConfig = mkOption {
2078+ default = {};
2079+ example = { MUDURL = "https://things.example.org/product_abc123/v5"; };
2080+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionLLDP;
2081+ description = lib.mdDoc ''
2082+ Each attribute in this set specifies an option in the
2083+ `[LLDP]` section of the unit. See
2084+ {manpage}`systemd.network(5)` for details.
2085+ '';
2086+ };
2087+2088+ canConfig = mkOption {
2089+ default = {};
2090+ example = { };
2091+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionCAN;
2092+ description = lib.mdDoc ''
2093+ Each attribute in this set specifies an option in the
2094+ `[CAN]` section of the unit. See
2095+ {manpage}`systemd.network(5)` for details.
2096+ '';
2097+ };
2098+2099+ ipoIBConfig = mkOption {
2100+ default = {};
2101+ example = { };
2102+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionIPoIB;
2103+ description = lib.mdDoc ''
2104+ Each attribute in this set specifies an option in the
2105+ `[IPoIB]` section of the unit. See
2106+ {manpage}`systemd.network(5)` for details.
2107+ '';
2108+ };
2109+2110+ qdiscConfig = mkOption {
2111+ default = {};
2112+ example = { Parent = "ingress"; };
2113+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionQDisc;
2114+ description = lib.mdDoc ''
2115+ Each attribute in this set specifies an option in the
2116+ `[QDisc]` section of the unit. See
2117+ {manpage}`systemd.network(5)` for details.
2118+ '';
2119+ };
2120+2121+ networkEmulatorConfig = mkOption {
2122+ default = {};
2123+ example = { Parent = "ingress"; DelaySec = "20msec"; };
2124+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionNetworkEmulator;
2125+ description = lib.mdDoc ''
2126+ Each attribute in this set specifies an option in the
2127+ `[NetworkEmulator]` section of the unit. See
2128+ {manpage}`systemd.network(5)` for details.
2129+ '';
2130+ };
2131+2132+ tokenBucketFilterConfig = mkOption {
2133+ default = {};
2134+ example = { Parent = "ingress"; Rate = "100k"; };
2135+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionTokenBucketFilter;
2136+ description = lib.mdDoc ''
2137+ Each attribute in this set specifies an option in the
2138+ `[TokenBucketFilter]` section of the unit. See
2139+ {manpage}`systemd.network(5)` for details.
2140+ '';
2141+ };
2142+2143+ pieConfig = mkOption {
2144+ default = {};
2145+ example = { Parent = "ingress"; PacketLimit = "3847"; };
2146+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionPIE;
2147+ description = lib.mdDoc ''
2148+ Each attribute in this set specifies an option in the
2149+ `[PIE]` section of the unit. See
2150+ {manpage}`systemd.network(5)` for details.
2151+ '';
2152+ };
2153+2154+ flowQueuePIEConfig = mkOption {
2155+ default = {};
2156+ example = { Parent = "ingress"; PacketLimit = "3847"; };
2157+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionFlowQueuePIE;
2158+ description = lib.mdDoc ''
2159+ Each attribute in this set specifies an option in the
2160+ `[FlowQueuePIE]` section of the unit. See
2161+ {manpage}`systemd.network(5)` for details.
2162+ '';
2163+ };
2164+2165+ stochasticFairBlueConfig = mkOption {
2166+ default = {};
2167+ example = { Parent = "ingress"; PacketLimit = "3847"; };
2168+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionStochasticFairBlue;
2169+ description = lib.mdDoc ''
2170+ Each attribute in this set specifies an option in the
2171+ `[StochasticFairBlue]` section of the unit. See
2172+ {manpage}`systemd.network(5)` for details.
2173+ '';
2174+ };
2175+2176+ stochasticFairnessQueueingConfig = mkOption {
2177+ default = {};
2178+ example = { Parent = "ingress"; PerturbPeriodSec = "30"; };
2179+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionStochasticFairnessQueueing;
2180+ description = lib.mdDoc ''
2181+ Each attribute in this set specifies an option in the
2182+ `[StochasticFairnessQueueing]` section of the unit. See
2183+ {manpage}`systemd.network(5)` for details.
2184+ '';
2185+ };
2186+2187+ bfifoConfig = mkOption {
2188+ default = {};
2189+ example = { Parent = "ingress"; LimitBytes = "20K"; };
2190+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionBFIFO;
2191+ description = lib.mdDoc ''
2192+ Each attribute in this set specifies an option in the
2193+ `[BFIFO]` section of the unit. See
2194+ {manpage}`systemd.network(5)` for details.
2195+ '';
2196+ };
2197+2198+ pfifoConfig = mkOption {
2199+ default = {};
2200+ example = { Parent = "ingress"; PacketLimit = "300"; };
2201+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionPFIFO;
2202+ description = lib.mdDoc ''
2203+ Each attribute in this set specifies an option in the
2204+ `[PFIFO]` section of the unit. See
2205+ {manpage}`systemd.network(5)` for details.
2206+ '';
2207+ };
2208+2209+ pfifoHeadDropConfig = mkOption {
2210+ default = {};
2211+ example = { Parent = "ingress"; PacketLimit = "300"; };
2212+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionPFIFOHeadDrop;
2213+ description = lib.mdDoc ''
2214+ Each attribute in this set specifies an option in the
2215+ `[PFIFOHeadDrop]` section of the unit. See
2216+ {manpage}`systemd.network(5)` for details.
2217+ '';
2218+ };
2219+2220+ pfifoFastConfig = mkOption {
2221+ default = {};
2222+ example = { Parent = "ingress"; };
2223+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionPFIFOFast;
2224+ description = lib.mdDoc ''
2225+ Each attribute in this set specifies an option in the
2226+ `[PFIFOFast]` section of the unit. See
2227+ {manpage}`systemd.network(5)` for details.
2228+ '';
2229+ };
2230+2231+ cakeConfig = mkOption {
2232+ default = {};
2233+ example = { Bandwidth = "40M"; OverheadBytes = 8; CompensationMode = "ptm"; };
2234+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionCAKE;
2235+ description = lib.mdDoc ''
2236+ Each attribute in this set specifies an option in the
2237+ `[CAKE]` section of the unit. See
2238+ {manpage}`systemd.network(5)` for details.
2239+ '';
2240+ };
2241+2242+ controlledDelayConfig = mkOption {
2243+ default = {};
2244+ example = { Parent = "ingress"; TargetSec = "20msec"; };
2245+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionControlledDelay;
2246+ description = lib.mdDoc ''
2247+ Each attribute in this set specifies an option in the
2248+ `[ControlledDelay]` section of the unit. See
2249+ {manpage}`systemd.network(5)` for details.
2250+ '';
2251+ };
2252+2253+ deficitRoundRobinSchedulerConfig = mkOption {
2254+ default = {};
2255+ example = { Parent = "root"; };
2256+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionDeficitRoundRobinScheduler;
2257+ description = lib.mdDoc ''
2258+ Each attribute in this set specifies an option in the
2259+ `[DeficitRoundRobinScheduler]` section of the unit. See
2260+ {manpage}`systemd.network(5)` for details.
2261+ '';
2262+ };
2263+2264+ deficitRoundRobinSchedulerClassConfig = mkOption {
2265+ default = {};
2266+ example = { Parent = "root"; QuantumBytes = "300k"; };
2267+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionDeficitRoundRobinSchedulerClass;
2268+ description = lib.mdDoc ''
2269+ Each attribute in this set specifies an option in the
2270+ `[DeficitRoundRobinSchedulerClass]` section of the unit. See
2271+ {manpage}`systemd.network(5)` for details.
2272+ '';
2273+ };
2274+2275+ enhancedTransmissionSelectionConfig = mkOption {
2276+ default = {};
2277+ example = { Parent = "root"; QuantumBytes = "300k"; Bands = 3; PriorityMap = "100 200 300"; };
2278+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionEnhancedTransmissionSelection;
2279+ description = lib.mdDoc ''
2280+ Each attribute in this set specifies an option in the
2281+ `[EnhancedTransmissionSelection]` section of the unit. See
2282+ {manpage}`systemd.network(5)` for details.
2283+ '';
2284+ };
2285+2286+ genericRandomEarlyDetectionConfig = mkOption {
2287+ default = {};
2288+ example = { Parent = "root"; VirtualQueues = 5; DefaultVirtualQueue = 3; };
2289+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionGenericRandomEarlyDetection;
2290+ description = lib.mdDoc ''
2291+ Each attribute in this set specifies an option in the
2292+ `[GenericRandomEarlyDetection]` section of the unit. See
2293+ {manpage}`systemd.network(5)` for details.
2294+ '';
2295+ };
2296+2297+ fairQueueingControlledDelayConfig = mkOption {
2298+ default = {};
2299+ example = { Parent = "root"; Flows = 5; };
2300+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionFairQueueingControlledDelay;
2301+ description = lib.mdDoc ''
2302+ Each attribute in this set specifies an option in the
2303+ `[FairQueueingControlledDelay]` section of the unit. See
2304+ {manpage}`systemd.network(5)` for details.
2305+ '';
2306+ };
2307+2308+ fairQueueingConfig = mkOption {
2309+ default = {};
2310+ example = { Parent = "root"; FlowLimit = 5; };
2311+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionFairQueueing;
2312+ description = lib.mdDoc ''
2313+ Each attribute in this set specifies an option in the
2314+ `[FairQueueing]` section of the unit. See
2315+ {manpage}`systemd.network(5)` for details.
2316+ '';
2317+ };
2318+2319+ trivialLinkEqualizerConfig = mkOption {
2320+ default = {};
2321+ example = { Parent = "root"; Id = 0; };
2322+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionTrivialLinkEqualizer;
2323+ description = lib.mdDoc ''
2324+ Each attribute in this set specifies an option in the
2325+ `[TrivialLinkEqualizer]` section of the unit. See
2326+ {manpage}`systemd.network(5)` for details.
2327+ '';
2328+ };
2329+2330+ hierarchyTokenBucketConfig = mkOption {
2331+ default = {};
2332+ example = { Parent = "root"; };
2333+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionHierarchyTokenBucket;
2334+ description = lib.mdDoc ''
2335+ Each attribute in this set specifies an option in the
2336+ `[HierarchyTokenBucket]` section of the unit. See
2337+ {manpage}`systemd.network(5)` for details.
2338+ '';
2339+ };
2340+2341+ hierarchyTokenBucketClassConfig = mkOption {
2342+ default = {};
2343+ example = { Parent = "root"; Rate = "10M"; };
2344+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionHierarchyTokenBucketClass;
2345+ description = lib.mdDoc ''
2346+ Each attribute in this set specifies an option in the
2347+ `[HierarchyTokenBucketClass]` section of the unit. See
2348+ {manpage}`systemd.network(5)` for details.
2349+ '';
2350+ };
2351+2352+ heavyHitterFilterConfig = mkOption {
2353+ default = {};
2354+ example = { Parent = "root"; PacketLimit = 10000; };
2355+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionHeavyHitterFilter;
2356+ description = lib.mdDoc ''
2357+ Each attribute in this set specifies an option in the
2358+ `[HeavyHitterFilter]` section of the unit. See
2359+ {manpage}`systemd.network(5)` for details.
2360+ '';
2361+ };
2362+2363+ quickFairQueueingConfig = mkOption {
2364+ default = {};
2365+ example = { Parent = "root"; };
2366+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionQuickFairQueueing;
2367+ description = lib.mdDoc ''
2368+ Each attribute in this set specifies an option in the
2369+ `[QuickFairQueueing]` section of the unit. See
2370+ {manpage}`systemd.network(5)` for details.
2371+ '';
2372+ };
2373+2374+ quickFairQueueingConfigClass = mkOption {
2375+ default = {};
2376+ example = { Parent = "root"; Weight = 133; };
2377+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionQuickFairQueueingClass;
2378+ description = lib.mdDoc ''
2379+ Each attribute in this set specifies an option in the
2380+ `[QuickFairQueueingClass]` section of the unit. See
2381+ {manpage}`systemd.network(5)` for details.
2382+ '';
2383+ };
2384+2385+ bridgeVLANConfig = mkOption {
2386+ default = {};
2387+ example = { VLAN = "10-20"; };
2388+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionbridgeVLAN;
2389+ description = lib.mdDoc ''
2390+ Each attribute in this set specifies an option in the
2391+ `[BridgeVLAN]` section of the unit. See
2392+ {manpage}`systemd.network(5)` for details.
2393+ '';
2394+ };
2395+2396+ bridgeVLANs = mkOption {
2397+ default = [];
2398+ example = [ { bridgeVLANConfig = { VLAN = "10-20"; }; } ];
2399+ type = with types; listOf (submodule bridgeVLANOptions);
2400+ description = lib.mdDoc ''
2401+ A list of BridgeVLAN sections to be added to the unit. See
2402+ {manpage}`systemd.network(5)` for details.
2403+ '';
2404+ };
2405+2406 name = mkOption {
2407 type = types.nullOr types.str;
2408 default = null;
···2663 [Tap]
2664 ${attrsToSection def.tapConfig}
2665 ''
2666+ + optionalString (def.l2tpConfig != { }) ''
2667+ [L2TP]
2668+ ${attrsToSection def.l2tpConfig}
2669+ ''
2670+ + flip concatMapStrings def.l2tpSessions (x: ''
2671+ [L2TPSession]
2672+ ${attrsToSection x.l2tpSessionConfig}
2673+ '')
2674 + optionalString (def.wireguardConfig != { }) ''
2675 [WireGuard]
2676 ${attrsToSection def.wireguardConfig}
···2809 + flip concatMapStrings def.dhcpServerStaticLeases (x: ''
2810 [DHCPServerStaticLease]
2811 ${attrsToSection x.dhcpServerStaticLeaseConfig}
2812+ '')
2813+ + optionalString (def.bridgeConfig != { }) ''
2814+ [Bridge]
2815+ ${attrsToSection def.bridgeConfig}
2816+ ''
2817+ + flip concatMapStrings def.bridgeFDBs (x: ''
2818+ [BridgeFDB]
2819+ ${attrsToSection x.bridgeFDBConfig}
2820+ '')
2821+ + flip concatMapStrings def.bridgeMDBs (x: ''
2822+ [BridgeMDB]
2823+ ${attrsToSection x.bridgeMDBConfig}
2824+ '')
2825+ + optionalString (def.lldpConfig != { }) ''
2826+ [LLDP]
2827+ ${attrsToSection def.lldpConfig}
2828+ ''
2829+ + optionalString (def.canConfig != { }) ''
2830+ [CAN]
2831+ ${attrsToSection def.canConfig}
2832+ ''
2833+ + optionalString (def.ipoIBConfig != { }) ''
2834+ [IPoIB]
2835+ ${attrsToSection def.ipoIBConfig}
2836+ ''
2837+ + optionalString (def.qdiscConfig != { }) ''
2838+ [QDisc]
2839+ ${attrsToSection def.qdiscConfig}
2840+ ''
2841+ + optionalString (def.networkEmulatorConfig != { }) ''
2842+ [NetworkEmulator]
2843+ ${attrsToSection def.networkEmulatorConfig}
2844+ ''
2845+ + optionalString (def.tokenBucketFilterConfig != { }) ''
2846+ [TokenBucketFilter]
2847+ ${attrsToSection def.tockenBucketFilterConfig}
2848+ ''
2849+ + optionalString (def.pieConfig != { }) ''
2850+ [PIE]
2851+ ${attrsToSection def.pieConfig}
2852+ ''
2853+ + optionalString (def.flowQueuePIEConfig != { }) ''
2854+ [FlowQueuePIE]
2855+ ${attrsToSection def.flowQueuePIEConfig}
2856+ ''
2857+ + optionalString (def.stochasticFairBlueConfig != { }) ''
2858+ [StochasticFairBlue]
2859+ ${attrsToSection def.stochasticFairBlueConfig}
2860+ ''
2861+ + optionalString (def.stochasticFairnessQueueingConfig != { }) ''
2862+ [StochasticFairnessQueueing]
2863+ ${attrsToSection def.stochasticFairnessQueueingConfig}
2864+ ''
2865+ + optionalString (def.bfifoConfig != { }) ''
2866+ [BFIFO]
2867+ ${attrsToSection def.bfifoConfig}
2868+ ''
2869+ + optionalString (def.pfifoConfig != { }) ''
2870+ [PFIFO]
2871+ ${attrsToSection def.pfifoConfig}
2872+ ''
2873+ + optionalString (def.pfifoHeadDropConfig != { }) ''
2874+ [PFIFOHeadDrop]
2875+ ${attrsToSection def.pfifoHeadDropConfig}
2876+ ''
2877+ + optionalString (def.pfifoFastConfig != { }) ''
2878+ [PFIFOFast]
2879+ ${attrsToSection def.pfifoFastConfig}
2880+ ''
2881+ + optionalString (def.cakeConfig != { }) ''
2882+ [CAKE]
2883+ ${attrsToSection def.cakeConfig}
2884+ ''
2885+ + optionalString (def.controlledDelayConfig != { }) ''
2886+ [ControlledDelay]
2887+ ${attrsToSection def.controlledDelayConfig}
2888+ ''
2889+ + optionalString (def.deficitRoundRobinSchedulerConfig != { }) ''
2890+ [DeficitRoundRobinScheduler]
2891+ ${attrsToSection def.deficitRoundRobinSchedulerConfig}
2892+ ''
2893+ + optionalString (def.deficitRoundRobinSchedulerClassConfig != { }) ''
2894+ [DeficitRoundRobinSchedulerClass]
2895+ ${attrsToSection def.deficitRoundRobinSchedulerClassConfig}
2896+ ''
2897+ + optionalString (def.enhancedTransmissionSelectionConfig != { }) ''
2898+ [EnhancedTransmissionSelection]
2899+ ${attrsToSection def.enhancedTransmissionSelectionConfig}
2900+ ''
2901+ + optionalString (def.genericRandomEarlyDetectionConfig != { }) ''
2902+ [GenericRandomEarlyDetection]
2903+ ${attrsToSection def.genericRandomEarlyDetectionConfig}
2904+ ''
2905+ + optionalString (def.fairQueueingControlledDelayConfig != { }) ''
2906+ [FairQueueingControlledDelay]
2907+ ${attrsToSection def.fairQueueingControlledDelayConfig}
2908+ ''
2909+ + optionalString (def.fairQueueingConfig != { }) ''
2910+ [FairQueueing]
2911+ ${attrsToSection def.fairQueueingConfig}
2912+ ''
2913+ + optionalString (def.trivialLinkEqualizerConfig != { }) ''
2914+ [TrivialLinkEqualizer]
2915+ ${attrsToSection def.trivialLinkEqualizerConfig}
2916+ ''
2917+ + optionalString (def.hierarchyTokenBucketConfig != { }) ''
2918+ [HierarchyTokenBucket]
2919+ ${attrsToSection def.hierarchyTokenBucketConfig}
2920+ ''
2921+ + optionalString (def.hierarchyTokenBucketClassConfig != { }) ''
2922+ [HierarchyTokenBucketClass]
2923+ ${attrsToSection def.hierarchyTokenBucketClassConfig}
2924+ ''
2925+ + optionalString (def.heavyHitterFilterConfig != { }) ''
2926+ [HeavyHitterFilter]
2927+ ${attrsToSection def.heavyHitterFilterConfig}
2928+ ''
2929+ + optionalString (def.quickFairQueueingConfig != { }) ''
2930+ [QuickFairQueueing]
2931+ ${attrsToSection def.quickFairQueueingConfig}
2932+ ''
2933+ + optionalString (def.quickFairQueueingConfigClass != { }) ''
2934+ [QuickFairQueueingClass]
2935+ ${attrsToSection def.quickFairQueueingConfigClass}
2936+ ''
2937+ + flip concatMapStrings def.bridgeVLANs (x: ''
2938+ [BridgeVLAN]
2939+ ${attrsToSection x.bridgeVLANConfig}
2940 '')
2941 + def.extraConfig;
2942 };
···55 nextcloudwithopenssl1.wait_for_unit("multi-user.target")
56 nextcloudwithopenssl1.succeed("nextcloud-occ status")
57 nextcloudwithopenssl1.succeed("curl -sSf http://nextcloudwithopenssl1/login")
05859 with subtest("With OpenSSL 1 SSE can be enabled and used"):
60 nextcloudwithopenssl1.succeed("nextcloud-occ app:enable encryption")
···71 nextcloudwithopenssl1.succeed("nextcloud-occ status")
7273 with subtest("Existing encrypted files cannot be read, but new files can be added"):
74- nextcloudwithopenssl1.fail("${withRcloneEnv3} ${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file >&2")
0075 nextcloudwithopenssl1.succeed("nextcloud-occ encryption:disable")
76 nextcloudwithopenssl1.succeed("${copySharedFile3}")
77 nextcloudwithopenssl1.succeed("grep bye /var/lib/nextcloud/data/root/files/test-shared-file2")
···55 nextcloudwithopenssl1.wait_for_unit("multi-user.target")
56 nextcloudwithopenssl1.succeed("nextcloud-occ status")
57 nextcloudwithopenssl1.succeed("curl -sSf http://nextcloudwithopenssl1/login")
58+ nextcloud_version = ${toString nextcloudVersion}
5960 with subtest("With OpenSSL 1 SSE can be enabled and used"):
61 nextcloudwithopenssl1.succeed("nextcloud-occ app:enable encryption")
···72 nextcloudwithopenssl1.succeed("nextcloud-occ status")
7374 with subtest("Existing encrypted files cannot be read, but new files can be added"):
75+ # This will succed starting NC26 because of their custom implementation of openssl_seal
76+ read_existing_file_test = nextcloudwithopenssl1.fail if nextcloud_version < 26 else nextcloudwithopenssl1.succeed
77+ read_existing_file_test("${withRcloneEnv3} ${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file >&2")
78 nextcloudwithopenssl1.succeed("nextcloud-occ encryption:disable")
79 nextcloudwithopenssl1.succeed("${copySharedFile3}")
80 nextcloudwithopenssl1.succeed("grep bye /var/lib/nextcloud/data/root/files/test-shared-file2")
···15 inherit sha256;
16 };
1718- patches = [ (./patches + "/v${major}/0001-Setup-remove-custom-dbuser-creation-behavior.patch") ];
01920 passthru.tests = nixosTests.nextcloud;
21···38 };
39 };
40in {
41- nextcloud23 = throw ''
42- Nextcloud v23 has been removed from `nixpkgs` as the support for is dropped
43- by upstream in 2022-12. Please upgrade to at least Nextcloud v24 by declaring
44-45- services.nextcloud.package = pkgs.nextcloud24;
46-47- in your NixOS config.
48-49- WARNING: if you were on Nextcloud 22 on NixOS 22.05 you have to upgrade to Nextcloud 23
50- first on 22.05 because Nextcloud doesn't support upgrades across multiple major versions!
51- '';
52-53 nextcloud24 = generic {
54 version = "24.0.10";
55 sha256 = "sha256-B6+0gO9wn39BpcR0IsIuMa81DH8TWuDOlTZR9O1qRbk=";
···58 nextcloud25 = generic {
59 version = "25.0.4";
60 sha256 = "sha256-wyUeAIOpQwPi1piLNS87Mwgqeacmsw/3RnCbD+hpoaY=";
0000061 };
6263 # tip: get the sha with:
···15 inherit sha256;
16 };
1718+ # This patch is only necessary for NC version <26.
19+ patches = lib.optional (lib.versionOlder major "26") (./patches + "/v${major}/0001-Setup-remove-custom-dbuser-creation-behavior.patch");
2021 passthru.tests = nixosTests.nextcloud;
22···39 };
40 };
41in {
00000000000042 nextcloud24 = generic {
43 version = "24.0.10";
44 sha256 = "sha256-B6+0gO9wn39BpcR0IsIuMa81DH8TWuDOlTZR9O1qRbk=";
···47 nextcloud25 = generic {
48 version = "25.0.4";
49 sha256 = "sha256-wyUeAIOpQwPi1piLNS87Mwgqeacmsw/3RnCbD+hpoaY=";
50+ };
51+52+ nextcloud26 = generic {
53+ version = "26.0.0";
54+ sha256 = "sha256-8WMVA2Ou6TZuy1zVJZv2dW7U8HPOp4tfpRXK2noNDD0=";
55 };
5657 # tip: get the sha with:
-122
pkgs/servers/nextcloud/packages/23.json
···1-{
2- "bookmarks": {
3- "sha256": "511aadcda0b1f051191c20cfd7048150536cfb1e748deb11b568bec4e535a173",
4- "url": "https://github.com/nextcloud/bookmarks/releases/download/v11.0.4/bookmarks-11.0.4.tar.gz",
5- "version": "11.0.4",
6- "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP v7.4+\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7- "homepage": "https://github.com/nextcloud/bookmarks",
8- "licenses": [
9- "agpl"
10- ]
11- },
12- "calendar": {
13- "sha256": "d6edc166d63204e39135c0e9f00c0f7a6875db89d34a936e16b513c749ac8b8d",
14- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v3.5.2/calendar-v3.5.2.tar.gz",
15- "version": "3.5.2",
16- "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17- "homepage": "https://github.com/nextcloud/calendar/",
18- "licenses": [
19- "agpl"
20- ]
21- },
22- "contacts": {
23- "sha256": "1938b266c5070573e0435ec31c08a19add96fd99c08c3c1f8309ee8e447093a0",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v4.2.2/contacts-v4.2.2.tar.gz",
25- "version": "4.2.2",
26- "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27- "homepage": "https://github.com/nextcloud/contacts#readme",
28- "licenses": [
29- "agpl"
30- ]
31- },
32- "deck": {
33- "sha256": "fd9ea1ce98c531c7442a784f693cb047d90fbaee313a820ee648f690697f5e13",
34- "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.6.4/deck-v1.6.4.tar.gz",
35- "version": "1.6.4",
36- "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
37- "homepage": "https://github.com/nextcloud/deck",
38- "licenses": [
39- "agpl"
40- ]
41- },
42- "keeweb": {
43- "sha256": "a3281fcfdb4058971a3b5c838870a8d5b533445c999b8e921fb8758b216dadbc",
44- "url": "https://github.com/jhass/nextcloud-keeweb/releases/download/v0.6.10/keeweb-0.6.10.tar.gz",
45- "version": "0.6.10",
46- "description": "Open Keepass stores inside Nextcloud with Keeweb just by clicking on an *.kdbx file in your Nextcloud.",
47- "homepage": "https://github.com/jhass/nextcloud-keeweb",
48- "licenses": [
49- "agpl"
50- ]
51- },
52- "mail": {
53- "sha256": "0e2c5465436b894ac916222391d94d364592c18b4258fd3aa4b760afa8fa6ad7",
54- "url": "https://github.com/nextcloud-releases/mail/releases/download/v1.14.3.alpha.1/mail-v1.14.3.alpha.1.tar.gz",
55- "version": "1.14.3-alpha.1",
56- "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
57- "homepage": "https://github.com/nextcloud/mail#readme",
58- "licenses": [
59- "agpl"
60- ]
61- },
62- "news": {
63- "sha256": "9551781fdbfb6d2c3cd77ee57eae0fb1583c7b54e9720bc955053f51541f4a86",
64- "url": "https://github.com/nextcloud/news/releases/download/19.0.0/news.tar.gz",
65- "version": "19.0.0",
66- "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
67- "homepage": "https://github.com/nextcloud/news",
68- "licenses": [
69- "agpl"
70- ]
71- },
72- "notes": {
73- "sha256": "adddee56456d0115f87a74405a6d62bd5e3af256e86199d87bbff3b2a6876299",
74- "url": "https://github.com/nextcloud/notes/releases/download/v4.5.1/notes.tar.gz",
75- "version": "4.5.1",
76- "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/stefan-niedermann/nextcloud-notes), [iOS](https://github.com/owncloud/notes-iOS-App) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
77- "homepage": "https://github.com/nextcloud/notes",
78- "licenses": [
79- "agpl"
80- ]
81- },
82- "onlyoffice": {
83- "sha256": "e7170f7cffb50547d51a17f0ad38dfab83040a25ebd80146a840d233093a27f0",
84- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.4.8/onlyoffice.tar.gz",
85- "version": "7.4.8",
86- "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
87- "homepage": "https://www.onlyoffice.com",
88- "licenses": [
89- "apache"
90- ]
91- },
92- "polls": {
93- "sha256": "b6ef0e8b34cdb5169341e30340bc9cefaa1254a1a6020e951f86e828f8591a11",
94- "url": "https://github.com/nextcloud/polls/releases/download/v3.8.3/polls.tar.gz",
95- "version": "3.8.3",
96- "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
97- "homepage": "https://github.com/nextcloud/polls",
98- "licenses": [
99- "agpl"
100- ]
101- },
102- "tasks": {
103- "sha256": "fdfa3168ac80eaef3e2de5009eee02a369acc8d35dfd8283d1f25423bdf3c532",
104- "url": "https://github.com/nextcloud/tasks/releases/download/v0.14.5/tasks.tar.gz",
105- "version": "0.14.5",
106- "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.",
107- "homepage": "https://github.com/nextcloud/tasks/",
108- "licenses": [
109- "agpl"
110- ]
111- },
112- "twofactor_webauthn": {
113- "sha256": "291c20032cfc1f2fb081cc8721e272bc503d103987c6abb7ce442e497d278d0a",
114- "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v0.3.3/twofactor_webauthn-v0.3.3.tar.gz",
115- "version": "0.3.3",
116- "description": "A two-factor provider for WebAuthn devices",
117- "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
118- "licenses": [
119- "agpl"
120- ]
121- }
122-}
···63 "sha256": "1payxppd2j0n67kcswb3dkk2a467fahwakxs7wqsfqgqgr9mcbl4",
64 "url": "https://github.com/nextcloud/forms/releases/download/v2.5.2/forms.tar.gz",
65 "version": "2.5.2",
66- "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
67 "homepage": "https://github.com/nextcloud/forms",
68 "licenses": [
69 "agpl"
···80 ]
81 },
82 "impersonate": {
83- "sha256": "1k1qm3jilys548g813y179x6rs8aglkvss8b0cmfvjlpmlaxpssx",
84- "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.11.0/impersonate-v1.11.0.tar.gz",
85- "version": "1.11.0",
86- "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud\n2. Open the user administration interface\n3. Select the impersonate button on the affected user\n4. Confirm the impersonation\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.",
87 "homepage": "https://github.com/nextcloud/impersonate",
88 "licenses": [
89 "agpl"
···110 ]
111 },
112 "news": {
113- "sha256": "17kz5499jkv43w8wcd1p982hpkw2akgzpv9cjj8qqjhvzv4qr171",
114- "url": "https://github.com/nextcloud/news/releases/download/21.0.0-beta1/news.tar.gz",
115- "version": "21.0.0-beta1",
116 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
117 "homepage": "https://github.com/nextcloud/news",
118 "licenses": [
···123 "sha256": "adddee56456d0115f87a74405a6d62bd5e3af256e86199d87bbff3b2a6876299",
124 "url": "https://github.com/nextcloud/notes/releases/download/v4.5.1/notes.tar.gz",
125 "version": "4.5.1",
126- "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/stefan-niedermann/nextcloud-notes), [iOS](https://github.com/owncloud/notes-iOS-App) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
127 "homepage": "https://github.com/nextcloud/notes",
128 "licenses": [
129 "agpl"
···140 ]
141 },
142 "onlyoffice": {
143- "sha256": "6117b7b8c5c7133975e4ebf482814cdcd3f94a1b3c76ea1b5eed47bdd1fbfcbb",
144- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.5.8/onlyoffice.tar.gz",
145- "version": "7.5.8",
146 "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
147 "homepage": "https://www.onlyoffice.com",
148 "licenses": [
···63 "sha256": "1payxppd2j0n67kcswb3dkk2a467fahwakxs7wqsfqgqgr9mcbl4",
64 "url": "https://github.com/nextcloud/forms/releases/download/v2.5.2/forms.tar.gz",
65 "version": "2.5.2",
66+ "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
67 "homepage": "https://github.com/nextcloud/forms",
68 "licenses": [
69 "agpl"
···80 ]
81 },
82 "impersonate": {
83+ "sha256": "1kjibw5rigij51j6vjmx7ykrk61lg98syp7kkr0fzgwzvxrdniah",
84+ "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.11.1/impersonate-v1.11.1.tar.gz",
85+ "version": "1.11.1",
86+ "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud.\n2. Open users administration interface.\n3. Select the impersonate button on the affected user.\n4. Confirm the impersonation.\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.",
87 "homepage": "https://github.com/nextcloud/impersonate",
88 "licenses": [
89 "agpl"
···110 ]
111 },
112 "news": {
113+ "sha256": "026ggjf6dqbjv8hnj6jj1nnqz0256ck2yg13zhln7zc84lhfzlfd",
114+ "url": "https://github.com/nextcloud/news/releases/download/21.1.0/news.tar.gz",
115+ "version": "21.1.0",
116 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
117 "homepage": "https://github.com/nextcloud/news",
118 "licenses": [
···123 "sha256": "adddee56456d0115f87a74405a6d62bd5e3af256e86199d87bbff3b2a6876299",
124 "url": "https://github.com/nextcloud/notes/releases/download/v4.5.1/notes.tar.gz",
125 "version": "4.5.1",
126+ "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
127 "homepage": "https://github.com/nextcloud/notes",
128 "licenses": [
129 "agpl"
···140 ]
141 },
142 "onlyoffice": {
143+ "sha256": "0hscbm7jcnxyg7ib0g16b0sw8nz7rl6qzx90qmki5knhzrf6hf1j",
144+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.7.0/onlyoffice.tar.gz",
145+ "version": "7.7.0",
146 "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
147 "homepage": "https://www.onlyoffice.com",
148 "licenses": [
+39-29
pkgs/servers/nextcloud/packages/25.json
···1{
2 "bookmarks": {
3- "sha256": "0dkfjafbynkrymsq183sad7zynqr2qls0cld73nvzn3smnvdl2xx",
4- "url": "https://github.com/nextcloud/bookmarks/releases/download/v12.0.0/bookmarks-12.0.0.tar.gz",
5- "version": "12.0.0",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP v7.4+\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13- "sha256": "0m0ixj4gaaqgnlk492ihkcxrxbww91jyalh40hdgnsryb9wrpkfp",
14- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.3.0-alpha1/calendar-v4.3.0-alpha1.tar.gz",
15- "version": "4.3.0-alpha.1",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23- "sha256": "1m00r6cpqyrg2b0p8hg4wqkb3wn643fy63ax7qksp39rn18smrwk",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.1.0/contacts-v5.1.0.tar.gz",
25- "version": "5.1.0",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···50 ]
51 },
52 "forms": {
53- "sha256": "0b2qvrnhsxdknlc8bpr4hmxqdk18f9vy8ry6nm49k4lbrsfg97nq",
54- "url": "https://github.com/nextcloud/forms/releases/download/v3.1.0/forms.tar.gz",
55- "version": "3.1.0",
56- "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
57 "homepage": "https://github.com/nextcloud/forms",
58 "licenses": [
59 "agpl"
···69 "agpl"
70 ]
71 },
000000000072 "keeweb": {
73 "sha256": "1g6bjbzk7rf9x7cblwsc7cmd3fx5zrkib5ra5xzsmqc9aqpy22zh",
74 "url": "https://github.com/jhass/nextcloud-keeweb/releases/download/v0.6.10/keeweb-0.6.10.tar.gz",
···80 ]
81 },
82 "mail": {
83- "sha256": "161ksx7g32fkpwxq3vij2vw6sxblv7xrxggsxnx2wj14ik3wxclv",
84- "url": "https://github.com/nextcloud-releases/mail/releases/download/v2.3.0-alpha.4/mail-v2.3.0-alpha.4.tar.gz",
85- "version": "2.3.0-alpha.4",
86 "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
87 "homepage": "https://github.com/nextcloud/mail#readme",
88 "licenses": [
···90 ]
91 },
92 "news": {
93- "sha256": "17kz5499jkv43w8wcd1p982hpkw2akgzpv9cjj8qqjhvzv4qr171",
94- "url": "https://github.com/nextcloud/news/releases/download/21.0.0-beta1/news.tar.gz",
95- "version": "21.0.0-beta1",
96 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
97 "homepage": "https://github.com/nextcloud/news",
98 "licenses": [
···120 ]
121 },
122 "onlyoffice": {
123- "sha256": "0gy4n86q7b5qmy609ncibp94v1b3z9msc0129572qz2zyxfqxq3i",
124- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.6.8/onlyoffice.tar.gz",
125- "version": "7.6.8",
126 "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
127 "homepage": "https://www.onlyoffice.com",
128 "licenses": [
···130 ]
131 },
132 "polls": {
133- "sha256": "0mqc9zmxrm98byy6v13si3hwii8hx85998c4kv91vk6ad0sfxjhb",
134- "url": "https://github.com/nextcloud/polls/releases/download/v4.1.2/polls.tar.gz",
135- "version": "4.1.2",
136 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
137 "homepage": "https://github.com/nextcloud/polls",
138 "licenses": [
···153 "sha256": "0pav5xcnj55vs04fm1fc2kpaz46k0rdlvv7xn6idwgh860anzp4g",
154 "url": "https://github.com/nextcloud-releases/spreed/releases/download/v15.0.4/spreed-v15.0.4.tar.gz",
155 "version": "15.0.4",
156- "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
157 "homepage": "https://github.com/nextcloud/spreed",
158 "licenses": [
159 "agpl"
···190 ]
191 },
192 "twofactor_webauthn": {
193- "sha256": "00nll7jfrmqw537r0g07yq7g9lh1kckiiigxgwyd4nh5j6f56v15",
194- "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.1.1/twofactor_webauthn-v1.1.1.tar.gz",
195- "version": "1.1.1",
196 "description": "A two-factor provider for WebAuthn devices",
197 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
198 "licenses": [
···1{
2 "bookmarks": {
3+ "sha256": "1kdpma5f3rb9g29j364lqv6bkar5qgwlvcxmhpmzllwlkmjpc9w8",
4+ "url": "https://github.com/nextcloud/bookmarks/releases/download/v12.1.0/bookmarks-12.1.0.tar.gz",
5+ "version": "12.1.0",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP v7.4+\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13+ "sha256": "18jlj2g2b57ibcvqiw3pkkky4rr20xi5plyxl1xjn2bp9l3hng4y",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.3.0/calendar-v4.3.0.tar.gz",
15+ "version": "4.3.0",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23+ "sha256": "1rdql3m7pg9m044hppyrm3xw329y8h0pzwcmpcinjbjs0vqjssxk",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.2.0/contacts-v5.2.0.tar.gz",
25+ "version": "5.2.0",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···50 ]
51 },
52 "forms": {
53+ "sha256": "1hjdwhhx5p9n185b5v0vbxhnarcm83r52hsqq7qwfcfpy86axafr",
54+ "url": "https://github.com/nextcloud/forms/releases/download/v3.2.0/forms.tar.gz",
55+ "version": "3.2.0",
56+ "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
57 "homepage": "https://github.com/nextcloud/forms",
58 "licenses": [
59 "agpl"
···69 "agpl"
70 ]
71 },
72+ "impersonate": {
73+ "sha256": "1whngpqx4b2vdsr8a9j8agdg2c8rm5rbk2vhh92myws55lqlbnz9",
74+ "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.12.0/impersonate-v1.12.0.tar.gz",
75+ "version": "1.12.0",
76+ "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud.\n2. Open users administration interface.\n3. Select the impersonate button on the affected user.\n4. Confirm the impersonation.\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.",
77+ "homepage": "https://github.com/nextcloud/impersonate",
78+ "licenses": [
79+ "agpl"
80+ ]
81+ },
82 "keeweb": {
83 "sha256": "1g6bjbzk7rf9x7cblwsc7cmd3fx5zrkib5ra5xzsmqc9aqpy22zh",
84 "url": "https://github.com/jhass/nextcloud-keeweb/releases/download/v0.6.10/keeweb-0.6.10.tar.gz",
···90 ]
91 },
92 "mail": {
93+ "sha256": "0sk19y9iwnbw6ci4hq9xxrn5qgnlgqlb5hpzc50i706s1z5n9cmc",
94+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v2.2.4/mail-v2.2.4.tar.gz",
95+ "version": "2.2.4",
96 "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
97 "homepage": "https://github.com/nextcloud/mail#readme",
98 "licenses": [
···100 ]
101 },
102 "news": {
103+ "sha256": "1i7avq4iliz8afrwc9hw7hb13g3223004b2dim7j77l3zsvkfq3h",
104+ "url": "https://github.com/nextcloud/news/releases/download/21.1.0-beta1/news.tar.gz",
105+ "version": "21.1.0-beta1",
106 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
107 "homepage": "https://github.com/nextcloud/news",
108 "licenses": [
···130 ]
131 },
132 "onlyoffice": {
133+ "sha256": "10axh9a4w8y3iw95xdjn4q8wjg5459dki42xb6cax5ikimyfv07j",
134+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.8.0/onlyoffice.tar.gz",
135+ "version": "7.8.0",
136 "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
137 "homepage": "https://www.onlyoffice.com",
138 "licenses": [
···140 ]
141 },
142 "polls": {
143+ "sha256": "12298sspxp0ap61z2fjlgnd30fn0gl92xa5m6rnx2jb5i39lh9wr",
144+ "url": "https://github.com/nextcloud/polls/releases/download/v5.0.0-beta4/polls.tar.gz",
145+ "version": "5.0.0-beta4",
146 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
147 "homepage": "https://github.com/nextcloud/polls",
148 "licenses": [
···163 "sha256": "0pav5xcnj55vs04fm1fc2kpaz46k0rdlvv7xn6idwgh860anzp4g",
164 "url": "https://github.com/nextcloud-releases/spreed/releases/download/v15.0.4/spreed-v15.0.4.tar.gz",
165 "version": "15.0.4",
166+ "description": "Chat, video & audio-conferencing using WebRTC\r\n\r\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\r\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\r\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\r\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\r\n\r\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\r\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
167 "homepage": "https://github.com/nextcloud/spreed",
168 "licenses": [
169 "agpl"
···200 ]
201 },
202 "twofactor_webauthn": {
203+ "sha256": "1f5zamydsl7lr91md2qmz0wzsfvs8q05qpn96x6i7c6886vx18xf",
204+ "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.1.2/twofactor_webauthn-v1.1.2.tar.gz",
205+ "version": "1.1.2",
206 "description": "A two-factor provider for WebAuthn devices",
207 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
208 "licenses": [
···1+{
2+ "bookmarks": {
3+ "sha256": "0xx331bgly91y8ncxk36ha3ncrr2xlivblfi7rix6ffkrdx73yb9",
4+ "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.0.1/bookmarks-13.0.1.tar.gz",
5+ "version": "13.0.1",
6+ "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP v7.4+\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7+ "homepage": "https://github.com/nextcloud/bookmarks",
8+ "licenses": [
9+ "agpl"
10+ ]
11+ },
12+ "calendar": {
13+ "sha256": "18jlj2g2b57ibcvqiw3pkkky4rr20xi5plyxl1xjn2bp9l3hng4y",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.3.0/calendar-v4.3.0.tar.gz",
15+ "version": "4.3.0",
16+ "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17+ "homepage": "https://github.com/nextcloud/calendar/",
18+ "licenses": [
19+ "agpl"
20+ ]
21+ },
22+ "contacts": {
23+ "sha256": "1rdql3m7pg9m044hppyrm3xw329y8h0pzwcmpcinjbjs0vqjssxk",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.2.0/contacts-v5.2.0.tar.gz",
25+ "version": "5.2.0",
26+ "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27+ "homepage": "https://github.com/nextcloud/contacts#readme",
28+ "licenses": [
29+ "agpl"
30+ ]
31+ },
32+ "deck": {
33+ "sha256": "1bx95f8rpvfwh0zf5iaks7w252dfbfh7xngljj58a4nwqv9g613q",
34+ "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.9.0/deck-v1.9.0.tar.gz",
35+ "version": "1.9.0",
36+ "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
37+ "homepage": "https://github.com/nextcloud/deck",
38+ "licenses": [
39+ "agpl"
40+ ]
41+ },
42+ "files_texteditor": {
43+ "sha256": "0rmk14iw34pd81snp3lm01k07wm5j2nh9spcd4j0m43l20b7kxss",
44+ "url": "https://github.com/nextcloud-releases/files_texteditor/releases/download/v2.15.0/files_texteditor.tar.gz",
45+ "version": "2.15.0",
46+ "description": "This application enables Nextcloud users to open, save and edit text files in the web browser. If enabled, an entry called \"Text file\" in the \"New\" button menu at the top of the web browser appears. When clicked, a new text file opens in the browser and the file can be saved into the current Nextcloud directory. Further, when a text file is clicked in the web browser, it will be opened and editable. If the privileges allow, a user can also edit shared files and save these changes back into the web browser.\nMore information is available in the text editor documentation.",
47+ "homepage": "https://github.com/nextcloud/files_texteditor",
48+ "licenses": [
49+ "agpl"
50+ ]
51+ },
52+ "forms": {
53+ "sha256": "1hjdwhhx5p9n185b5v0vbxhnarcm83r52hsqq7qwfcfpy86axafr",
54+ "url": "https://github.com/nextcloud/forms/releases/download/v3.2.0/forms.tar.gz",
55+ "version": "3.2.0",
56+ "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
57+ "homepage": "https://github.com/nextcloud/forms",
58+ "licenses": [
59+ "agpl"
60+ ]
61+ },
62+ "groupfolders": {
63+ "sha256": "0v54642rqlgmcncjrwf5bizj0a816l70k8ndfa68hkypbyp4yxm0",
64+ "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v14.0.0/groupfolders-v14.0.0.tar.gz",
65+ "version": "14.0.0",
66+ "description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.\n\nNote: Encrypting the contents of group folders is currently not supported.",
67+ "homepage": "https://github.com/nextcloud/groupfolders",
68+ "licenses": [
69+ "agpl"
70+ ]
71+ },
72+ "impersonate": {
73+ "sha256": "0x5ap5s9qm4lffb022yxx1fmpgjk1w2y95cja4zfd5vc70d37r0s",
74+ "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.13.0/impersonate-v1.13.0.tar.gz",
75+ "version": "1.13.0",
76+ "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud.\n2. Open users administration interface.\n3. Select the impersonate button on the affected user.\n4. Confirm the impersonation.\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.",
77+ "homepage": "https://github.com/nextcloud/impersonate",
78+ "licenses": [
79+ "agpl"
80+ ]
81+ },
82+ "mail": {
83+ "sha256": "0lx8s7bb0w7d5kvn0np2p4rjjpajbhxf55qqp8ixfjkdcn6gkkxj",
84+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.0.0/mail-v3.0.0.tar.gz",
85+ "version": "3.0.0",
86+ "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
87+ "homepage": "https://github.com/nextcloud/mail#readme",
88+ "licenses": [
89+ "agpl"
90+ ]
91+ },
92+ "news": {
93+ "sha256": "026ggjf6dqbjv8hnj6jj1nnqz0256ck2yg13zhln7zc84lhfzlfd",
94+ "url": "https://github.com/nextcloud/news/releases/download/21.1.0/news.tar.gz",
95+ "version": "21.1.0",
96+ "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
97+ "homepage": "https://github.com/nextcloud/news",
98+ "licenses": [
99+ "agpl"
100+ ]
101+ },
102+ "notes": {
103+ "sha256": "19875sl3wpwnq2wrblfyyxhrp7hpqwazrnmz037yd1vf43crw03d",
104+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.7.0/notes.tar.gz",
105+ "version": "4.7.0",
106+ "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
107+ "homepage": "https://github.com/nextcloud/notes",
108+ "licenses": [
109+ "agpl"
110+ ]
111+ },
112+ "notify_push": {
113+ "sha256": "1vfa68spnyfivcx0vp49mimf5xg7hsxnifd06imd1c0mw3nlfm4p",
114+ "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.0/notify_push-v0.6.0.tar.gz",
115+ "version": "0.6.0",
116+ "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
117+ "homepage": "",
118+ "licenses": [
119+ "agpl"
120+ ]
121+ },
122+ "onlyoffice": {
123+ "sha256": "10axh9a4w8y3iw95xdjn4q8wjg5459dki42xb6cax5ikimyfv07j",
124+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.8.0/onlyoffice.tar.gz",
125+ "version": "7.8.0",
126+ "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
127+ "homepage": "https://www.onlyoffice.com",
128+ "licenses": [
129+ "apache"
130+ ]
131+ },
132+ "polls": {
133+ "sha256": "12298sspxp0ap61z2fjlgnd30fn0gl92xa5m6rnx2jb5i39lh9wr",
134+ "url": "https://github.com/nextcloud/polls/releases/download/v5.0.0-beta4/polls.tar.gz",
135+ "version": "5.0.0-beta4",
136+ "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
137+ "homepage": "https://github.com/nextcloud/polls",
138+ "licenses": [
139+ "agpl"
140+ ]
141+ },
142+ "registration": {
143+ "sha256": "07dqc670qmdb3c8jjnj7azxxspjhiv6m9nrj960y3rjabyzy25m9",
144+ "url": "https://github.com/nextcloud-releases/registration/releases/download/v2.1.0/registration-v2.1.0.tar.gz",
145+ "version": "2.1.0",
146+ "description": "User registration\n\nThis app allows users to register a new account.\n\n# Features\n\n- Add users to a given group\n- Allow-list with email domains (including wildcard) to register with\n- Administrator will be notified via email for new user creation or require approval\n- Supports Nextcloud's Client Login Flow v1 and v2 - allowing registration in the mobile Apps and Desktop clients\n\n# Web form registration flow\n\n1. User enters their email address\n2. Verification link is sent to the email address\n3. User clicks on the verification link\n4. User is lead to a form where they can choose their username and password\n5. New account is created and is logged in automatically",
147+ "homepage": "https://github.com/nextcloud/registration",
148+ "licenses": [
149+ "agpl"
150+ ]
151+ },
152+ "spreed": {
153+ "sha256": "0i5n47j8hvngfkiad88j5m37frp3bp4w5r7qaram5dvxmm2rkngc",
154+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v16.0.0/spreed-v16.0.0.tar.gz",
155+ "version": "16.0.0",
156+ "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
157+ "homepage": "https://github.com/nextcloud/spreed",
158+ "licenses": [
159+ "agpl"
160+ ]
161+ },
162+ "tasks": {
163+ "sha256": "0jm13d6nm7cfsw27yfiq1il9xjlh0qrq8xby2yz9dmggn7lk1dx5",
164+ "url": "https://github.com/nextcloud/tasks/releases/download/v0.14.5/tasks.tar.gz",
165+ "version": "0.14.5",
166+ "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.",
167+ "homepage": "https://github.com/nextcloud/tasks/",
168+ "licenses": [
169+ "agpl"
170+ ]
171+ },
172+ "twofactor_nextcloud_notification": {
173+ "sha256": "13afyhiy7yk0fcf32792dwabjcixnw5b4hkxykw0xby3hnh0m3l2",
174+ "url": "https://github.com/nextcloud-releases/twofactor_nextcloud_notification/releases/download/v3.6.0/twofactor_nextcloud_notification-v3.6.0.tar.gz",
175+ "version": "3.6.0",
176+ "description": "Allows using any of your logged in devices as second factor",
177+ "homepage": "https://github.com/nextcloud/twofactor_nextcloud_notification",
178+ "licenses": [
179+ "agpl"
180+ ]
181+ },
182+ "twofactor_webauthn": {
183+ "sha256": "1f5zamydsl7lr91md2qmz0wzsfvs8q05qpn96x6i7c6886vx18xf",
184+ "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.1.2/twofactor_webauthn-v1.1.2.tar.gz",
185+ "version": "1.1.2",
186+ "description": "A two-factor provider for WebAuthn devices",
187+ "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
188+ "licenses": [
189+ "agpl"
190+ ]
191+ },
192+ "unsplash": {
193+ "sha256": "0zakbrgjc3i6rl0nqwxfsfwybbqpr50c8c10d6s7r9m4gck0y2bm",
194+ "url": "https://github.com/nextcloud/unsplash/releases/download/v2.2.0/unsplash.tar.gz",
195+ "version": "2.2.0",
196+ "description": "Show a new random featured nature photo in your nextcloud. Now with choosable motives!",
197+ "homepage": "https://github.com/nextcloud/unsplash/",
198+ "licenses": [
199+ "agpl"
200+ ]
201+ }
202+}