···253/nixos/tests/postgresql @NixOS/postgres
254255# MySQL/MariaDB and related stuff
0256/nixos/modules/services/backup/mysql-backup.nix @6543
257258# Hardened profile & related modules
···253/nixos/tests/postgresql @NixOS/postgres
254255# MySQL/MariaDB and related stuff
256+/nixos/modules/services/databases/mysql.nix @6543
257/nixos/modules/services/backup/mysql-backup.nix @6543
258259# Hardened profile & related modules
···1-{ config, lib, pkgs, ... }:
000002let
34 cfg = config.services.mysql;
···8 # Oracle MySQL has supported "notify" service type since 8.0
9 hasNotify = isMariaDB || (isOracle && lib.versionAtLeast cfg.package.version "8.0");
1011- mysqldOptions =
12- "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${cfg.package}";
1314 format = pkgs.formats.ini { listsAsDuplicateKeys = true; };
15 configFile = format.generate "my.cnf" cfg.settings;
···1819{
20 imports = [
21- (lib.mkRemovedOptionModule [ "services" "mysql" "pidDir" ] "Don't wait for pidfiles, describe dependencies through systemd.")
22- (lib.mkRemovedOptionModule [ "services" "mysql" "rootPassword" ] "Use socket authentication or set the password outside of the nix store.")
23- (lib.mkRemovedOptionModule [ "services" "mysql" "extraOptions" ] "Use services.mysql.settings.mysqld instead.")
24- (lib.mkRemovedOptionModule [ "services" "mysql" "bind" ] "Use services.mysql.settings.mysqld.bind-address instead.")
25- (lib.mkRemovedOptionModule [ "services" "mysql" "port" ] "Use services.mysql.settings.mysqld.port instead.")
0000000000000000000026 ];
2728 ###### interface
···106107 settings = lib.mkOption {
108 type = format.type;
109- default = {};
110 description = ''
111 MySQL configuration. Refer to
112 <https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html>,
···137 };
138139 initialDatabases = lib.mkOption {
140- type = lib.types.listOf (lib.types.submodule {
141- options = {
142- name = lib.mkOption {
143- type = lib.types.str;
144- description = ''
145- The name of the database to create.
146- '';
0000000000147 };
148- schema = lib.mkOption {
149- type = lib.types.nullOr lib.types.path;
150- default = null;
151- description = ''
152- The initial schema of the database; if null (the default),
153- an empty database is created.
154- '';
155- };
156- };
157- });
158- default = [];
159 description = ''
160 List of database names and their initial schemas that should be used to create databases on the first startup
161 of MySQL. The schema attribute is optional: If not specified, an empty database is created.
···176177 ensureDatabases = lib.mkOption {
178 type = lib.types.listOf lib.types.str;
179- default = [];
180 description = ''
181 Ensures that the specified databases exist.
182 This option will never delete existing databases, especially not when the value of this
···190 };
191192 ensureUsers = lib.mkOption {
193- type = lib.types.listOf (lib.types.submodule {
194- options = {
195- name = lib.mkOption {
196- type = lib.types.str;
197- description = ''
198- Name of the user to ensure.
199- '';
200- };
201- ensurePermissions = lib.mkOption {
202- type = lib.types.attrsOf lib.types.str;
203- default = {};
204- description = ''
205- Permissions to ensure for the user, specified as attribute set.
206- The attribute names specify the database and tables to grant the permissions for,
207- separated by a dot. You may use wildcards here.
208- The attribute values specfiy the permissions to grant.
209- You may specify one or multiple comma-separated SQL privileges here.
0210211- For more information on how to specify the target
212- and on which privileges exist, see the
213- [GRANT syntax](https://mariadb.com/kb/en/library/grant/).
214- The attributes are used as `GRANT ''${attrName} ON ''${attrValue}`.
215- '';
216- example = lib.literalExpression ''
217- {
218- "database.*" = "ALL PRIVILEGES";
219- "*.*" = "SELECT, LOCK TABLES";
220- }
221- '';
0222 };
223- };
224- });
225- default = [];
226 description = ''
227 Ensures that the specified users exist and have at least the ensured permissions.
228 The MySQL users will be identified using Unix socket authentication. This authenticates the Unix user with the
···251252 replication = {
253 role = lib.mkOption {
254- type = lib.types.enum [ "master" "slave" "none" ];
0000255 default = "none";
256 description = "Role of the MySQL server instance.";
257 };
···291 };
292293 };
294-295296 ###### implementation
297298 config = lib.mkIf cfg.enable {
299300- services.mysql.dataDir =
301- lib.mkDefault (if lib.versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql"
302- else "/var/mysql");
303304 services.mysql.settings.mysqld = lib.mkMerge [
305 {
···311 log-bin-index = "mysql-bin-${toString cfg.replication.serverId}.index";
312 relay-log = "mysql-relay-bin";
313 server-id = cfg.replication.serverId;
314- binlog-ignore-db = [ "information_schema" "performance_schema" "mysql" ];
0000315 })
316 (lib.mkIf (!isMariaDB) {
317 plugin-load-add = [ "auth_socket.so" ];
···355 pkgs.nettools
356 ];
357358- preStart = if isMariaDB then ''
359- if ! test -e ${cfg.dataDir}/mysql; then
360- ${cfg.package}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${mysqldOptions}
361- touch ${cfg.dataDir}/mysql_init
362- fi
363- '' else ''
364- if ! test -e ${cfg.dataDir}/mysql; then
365- ${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} --initialize-insecure
366- touch ${cfg.dataDir}/mysql_init
367- fi
368- '';
0000369370 script = ''
371 # https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/#systemd-and-galera-recovery
···379 exec ${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
380 '';
381382- postStart = let
383- # The super user account to use on *first* run of MySQL server
384- superUser = if isMariaDB then cfg.user else "root";
385- in ''
386- ${lib.optionalString (!hasNotify) ''
387- # Wait until the MySQL server is available for use
388- while [ ! -e /run/mysqld/mysqld.sock ]
389- do
390- echo "MySQL daemon not yet started. Waiting for 1 second..."
391- sleep 1
392- done
393- ''}
00394395- if [ -f ${cfg.dataDir}/mysql_init ]
396- then
397- # While MariaDB comes with a 'mysql' super user account since 10.4.x, MySQL does not
398- # Since we don't want to run this service as 'root' we need to ensure the account exists on first run
399- ( echo "CREATE USER IF NOT EXISTS '${cfg.user}'@'localhost' IDENTIFIED WITH ${if isMariaDB then "unix_socket" else "auth_socket"};"
400- echo "GRANT ALL PRIVILEGES ON *.* TO '${cfg.user}'@'localhost' WITH GRANT OPTION;"
401- ) | ${cfg.package}/bin/mysql -u ${superUser} -N
00402403- ${lib.concatMapStrings (database: ''
404- # Create initial databases
405- if ! test -e "${cfg.dataDir}/${database.name}"; then
406- echo "Creating initial database: ${database.name}"
407- ( echo 'create database `${database.name}`;'
408409- ${lib.optionalString (database.schema != null) ''
410- echo 'use `${database.name}`;'
411412- # TODO: this silently falls through if database.schema does not exist,
413- # we should catch this somehow and exit, but can't do it here because we're in a subshell.
414- if [ -f "${database.schema}" ]
415- then
416- cat ${database.schema}
417- elif [ -d "${database.schema}" ]
418- then
419- cat ${database.schema}/mysql-databases/*.sql
420- fi
421- ''}
422- ) | ${cfg.package}/bin/mysql -u ${superUser} -N
423- fi
424- '') cfg.initialDatabases}
425426- ${lib.optionalString (cfg.replication.role == "master")
427- ''
428 # Set up the replication master
429430 ( echo "use mysql;"
···434 ) | ${cfg.package}/bin/mysql -u ${superUser} -N
435 ''}
436437- ${lib.optionalString (cfg.replication.role == "slave")
438- ''
439 # Set up the replication slave
440441 ( echo "stop slave;"
···444 ) | ${cfg.package}/bin/mysql -u ${superUser} -N
445 ''}
446447- ${lib.optionalString (cfg.initialScript != null)
448- ''
449 # Execute initial script
450 # using toString to avoid copying the file to nix store if given as path instead of string,
451 # as it might contain credentials
452 cat ${toString cfg.initialScript} | ${cfg.package}/bin/mysql -u ${superUser} -N
453 ''}
454455- rm ${cfg.dataDir}/mysql_init
456- fi
457458- ${lib.optionalString (cfg.ensureDatabases != []) ''
459- (
460- ${lib.concatMapStrings (database: ''
461- echo "CREATE DATABASE IF NOT EXISTS \`${database}\`;"
462- '') cfg.ensureDatabases}
463- ) | ${cfg.package}/bin/mysql -N
464- ''}
465466- ${lib.concatMapStrings (user:
467- ''
468- ( echo "CREATE USER IF NOT EXISTS '${user.name}'@'localhost' IDENTIFIED WITH ${if isMariaDB then "unix_socket" else "auth_socket"};"
469- ${lib.concatStringsSep "\n" (lib.mapAttrsToList (database: permission: ''
470- echo "GRANT ${permission} ON ${database} TO '${user.name}'@'localhost';"
471- '') user.ensurePermissions)}
000472 ) | ${cfg.package}/bin/mysql -N
473 '') cfg.ensureUsers}
474- '';
475476 serviceConfig = lib.mkMerge [
477 {
···500 ProtectKernelTunables = true;
501 ProtectKernelModules = true;
502 ProtectControlGroups = true;
503- RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
0000504 LockPersonality = true;
505 MemoryDenyWriteExecute = true;
506 RestrictRealtime = true;
···516 ];
517 };
518 };
00519}
···1+{
2+ config,
3+ lib,
4+ pkgs,
5+ ...
6+}:
7let
89 cfg = config.services.mysql;
···13 # Oracle MySQL has supported "notify" service type since 8.0
14 hasNotify = isMariaDB || (isOracle && lib.versionAtLeast cfg.package.version "8.0");
1516+ mysqldOptions = "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${cfg.package}";
01718 format = pkgs.formats.ini { listsAsDuplicateKeys = true; };
19 configFile = format.generate "my.cnf" cfg.settings;
···2223{
24 imports = [
25+ (lib.mkRemovedOptionModule [
26+ "services"
27+ "mysql"
28+ "pidDir"
29+ ] "Don't wait for pidfiles, describe dependencies through systemd.")
30+ (lib.mkRemovedOptionModule [
31+ "services"
32+ "mysql"
33+ "rootPassword"
34+ ] "Use socket authentication or set the password outside of the nix store.")
35+ (lib.mkRemovedOptionModule [
36+ "services"
37+ "mysql"
38+ "extraOptions"
39+ ] "Use services.mysql.settings.mysqld instead.")
40+ (lib.mkRemovedOptionModule [
41+ "services"
42+ "mysql"
43+ "bind"
44+ ] "Use services.mysql.settings.mysqld.bind-address instead.")
45+ (lib.mkRemovedOptionModule [
46+ "services"
47+ "mysql"
48+ "port"
49+ ] "Use services.mysql.settings.mysqld.port instead.")
50 ];
5152 ###### interface
···130131 settings = lib.mkOption {
132 type = format.type;
133+ default = { };
134 description = ''
135 MySQL configuration. Refer to
136 <https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html>,
···161 };
162163 initialDatabases = lib.mkOption {
164+ type = lib.types.listOf (
165+ lib.types.submodule {
166+ options = {
167+ name = lib.mkOption {
168+ type = lib.types.str;
169+ description = ''
170+ The name of the database to create.
171+ '';
172+ };
173+ schema = lib.mkOption {
174+ type = lib.types.nullOr lib.types.path;
175+ default = null;
176+ description = ''
177+ The initial schema of the database; if null (the default),
178+ an empty database is created.
179+ '';
180+ };
181 };
182+ }
183+ );
184+ default = [ ];
00000000185 description = ''
186 List of database names and their initial schemas that should be used to create databases on the first startup
187 of MySQL. The schema attribute is optional: If not specified, an empty database is created.
···202203 ensureDatabases = lib.mkOption {
204 type = lib.types.listOf lib.types.str;
205+ default = [ ];
206 description = ''
207 Ensures that the specified databases exist.
208 This option will never delete existing databases, especially not when the value of this
···216 };
217218 ensureUsers = lib.mkOption {
219+ type = lib.types.listOf (
220+ lib.types.submodule {
221+ options = {
222+ name = lib.mkOption {
223+ type = lib.types.str;
224+ description = ''
225+ Name of the user to ensure.
226+ '';
227+ };
228+ ensurePermissions = lib.mkOption {
229+ type = lib.types.attrsOf lib.types.str;
230+ default = { };
231+ description = ''
232+ Permissions to ensure for the user, specified as attribute set.
233+ The attribute names specify the database and tables to grant the permissions for,
234+ separated by a dot. You may use wildcards here.
235+ The attribute values specfiy the permissions to grant.
236+ You may specify one or multiple comma-separated SQL privileges here.
237238+ For more information on how to specify the target
239+ and on which privileges exist, see the
240+ [GRANT syntax](https://mariadb.com/kb/en/library/grant/).
241+ The attributes are used as `GRANT ''${attrName} ON ''${attrValue}`.
242+ '';
243+ example = lib.literalExpression ''
244+ {
245+ "database.*" = "ALL PRIVILEGES";
246+ "*.*" = "SELECT, LOCK TABLES";
247+ }
248+ '';
249+ };
250 };
251+ }
252+ );
253+ default = [ ];
254 description = ''
255 Ensures that the specified users exist and have at least the ensured permissions.
256 The MySQL users will be identified using Unix socket authentication. This authenticates the Unix user with the
···279280 replication = {
281 role = lib.mkOption {
282+ type = lib.types.enum [
283+ "master"
284+ "slave"
285+ "none"
286+ ];
287 default = "none";
288 description = "Role of the MySQL server instance.";
289 };
···323 };
324325 };
0326327 ###### implementation
328329 config = lib.mkIf cfg.enable {
330331+ services.mysql.dataDir = lib.mkDefault (
332+ if lib.versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql" else "/var/mysql"
333+ );
334335 services.mysql.settings.mysqld = lib.mkMerge [
336 {
···342 log-bin-index = "mysql-bin-${toString cfg.replication.serverId}.index";
343 relay-log = "mysql-relay-bin";
344 server-id = cfg.replication.serverId;
345+ binlog-ignore-db = [
346+ "information_schema"
347+ "performance_schema"
348+ "mysql"
349+ ];
350 })
351 (lib.mkIf (!isMariaDB) {
352 plugin-load-add = [ "auth_socket.so" ];
···390 pkgs.nettools
391 ];
392393+ preStart =
394+ if isMariaDB then
395+ ''
396+ if ! test -e ${cfg.dataDir}/mysql; then
397+ ${cfg.package}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${mysqldOptions}
398+ touch ${cfg.dataDir}/mysql_init
399+ fi
400+ ''
401+ else
402+ ''
403+ if ! test -e ${cfg.dataDir}/mysql; then
404+ ${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} --initialize-insecure
405+ touch ${cfg.dataDir}/mysql_init
406+ fi
407+ '';
408409 script = ''
410 # https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/#systemd-and-galera-recovery
···418 exec ${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
419 '';
420421+ postStart =
422+ let
423+ # The super user account to use on *first* run of MySQL server
424+ superUser = if isMariaDB then cfg.user else "root";
425+ in
426+ ''
427+ ${lib.optionalString (!hasNotify) ''
428+ # Wait until the MySQL server is available for use
429+ while [ ! -e /run/mysqld/mysqld.sock ]
430+ do
431+ echo "MySQL daemon not yet started. Waiting for 1 second..."
432+ sleep 1
433+ done
434+ ''}
435436+ if [ -f ${cfg.dataDir}/mysql_init ]
437+ then
438+ # While MariaDB comes with a 'mysql' super user account since 10.4.x, MySQL does not
439+ # Since we don't want to run this service as 'root' we need to ensure the account exists on first run
440+ ( echo "CREATE USER IF NOT EXISTS '${cfg.user}'@'localhost' IDENTIFIED WITH ${
441+ if isMariaDB then "unix_socket" else "auth_socket"
442+ };"
443+ echo "GRANT ALL PRIVILEGES ON *.* TO '${cfg.user}'@'localhost' WITH GRANT OPTION;"
444+ ) | ${cfg.package}/bin/mysql -u ${superUser} -N
445446+ ${lib.concatMapStrings (database: ''
447+ # Create initial databases
448+ if ! test -e "${cfg.dataDir}/${database.name}"; then
449+ echo "Creating initial database: ${database.name}"
450+ ( echo 'create database `${database.name}`;'
451452+ ${lib.optionalString (database.schema != null) ''
453+ echo 'use `${database.name}`;'
454455+ # TODO: this silently falls through if database.schema does not exist,
456+ # we should catch this somehow and exit, but can't do it here because we're in a subshell.
457+ if [ -f "${database.schema}" ]
458+ then
459+ cat ${database.schema}
460+ elif [ -d "${database.schema}" ]
461+ then
462+ cat ${database.schema}/mysql-databases/*.sql
463+ fi
464+ ''}
465+ ) | ${cfg.package}/bin/mysql -u ${superUser} -N
466+ fi
467+ '') cfg.initialDatabases}
468469+ ${lib.optionalString (cfg.replication.role == "master") ''
0470 # Set up the replication master
471472 ( echo "use mysql;"
···476 ) | ${cfg.package}/bin/mysql -u ${superUser} -N
477 ''}
478479+ ${lib.optionalString (cfg.replication.role == "slave") ''
0480 # Set up the replication slave
481482 ( echo "stop slave;"
···485 ) | ${cfg.package}/bin/mysql -u ${superUser} -N
486 ''}
487488+ ${lib.optionalString (cfg.initialScript != null) ''
0489 # Execute initial script
490 # using toString to avoid copying the file to nix store if given as path instead of string,
491 # as it might contain credentials
492 cat ${toString cfg.initialScript} | ${cfg.package}/bin/mysql -u ${superUser} -N
493 ''}
494495+ rm ${cfg.dataDir}/mysql_init
496+ fi
497498+ ${lib.optionalString (cfg.ensureDatabases != [ ]) ''
499+ (
500+ ${lib.concatMapStrings (database: ''
501+ echo "CREATE DATABASE IF NOT EXISTS \`${database}\`;"
502+ '') cfg.ensureDatabases}
503+ ) | ${cfg.package}/bin/mysql -N
504+ ''}
505506+ ${lib.concatMapStrings (user: ''
507+ ( echo "CREATE USER IF NOT EXISTS '${user.name}'@'localhost' IDENTIFIED WITH ${
508+ if isMariaDB then "unix_socket" else "auth_socket"
509+ };"
510+ ${lib.concatStringsSep "\n" (
511+ lib.mapAttrsToList (database: permission: ''
512+ echo "GRANT ${permission} ON ${database} TO '${user.name}'@'localhost';"
513+ '') user.ensurePermissions
514+ )}
515 ) | ${cfg.package}/bin/mysql -N
516 '') cfg.ensureUsers}
517+ '';
518519 serviceConfig = lib.mkMerge [
520 {
···543 ProtectKernelTunables = true;
544 ProtectKernelModules = true;
545 ProtectControlGroups = true;
546+ RestrictAddressFamilies = [
547+ "AF_UNIX"
548+ "AF_INET"
549+ "AF_INET6"
550+ ];
551 LockPersonality = true;
552 MemoryDenyWriteExecute = true;
553 RestrictRealtime = true;
···563 ];
564 };
565 };
566+567+ meta.maintainers = [ lib.maintainers._6543 ];
568}
···245246## Known warnings {#module-services-nextcloud-known-warnings}
247248-### Failed to get an iterator for log entries: Logreader application only supports "file" log_type {#module-services-nextcloud-warning-logreader}
249250This is because
251···253* the Logreader application that allows reading logs in the admin panel is enabled
254 by default and requires logs written to a file.
255256-The logreader application doesn't work, as it was the case before. The only change is that
257-it complains loudly now. So nothing actionable here by default. Alternatively you can
258-259-* disable the logreader application to shut up the "error".
260-261- We can't really do that by default since whether apps are enabled/disabled is part
262- of the application's state and tracked inside the database.
263264-* set [](#opt-services.nextcloud.settings.log_type) to "file" to be able to view logs
265- from the admin panel.
0266267## Maintainer information {#module-services-nextcloud-maintainer-info}
268
···245246## Known warnings {#module-services-nextcloud-known-warnings}
247248+### Logreader application only supports "file" log_type {#module-services-nextcloud-warning-logreader}
249250This is because
251···253* the Logreader application that allows reading logs in the admin panel is enabled
254 by default and requires logs written to a file.
255256+If you want to view logs in the admin panel,
257+set [](#opt-services.nextcloud.settings.log_type) to "file".
00000258259+If you prefer logs in the journal, disable the logreader application to shut up the
260+"info". We can't really do that by default since whether apps are enabled/disabled
261+is part of the application's state and tracked inside the database.
262263## Maintainer information {#module-services-nextcloud-maintainer-info}
264
+2-1
nixos/modules/system/boot/systemd/tmpfiles.nix
···29 };
30 };
31 default = {};
32- type = attrsWith' "config-name" (attrsWith' "tmpfiles-type" (attrsWith' "path" (types.submodule ({ name, config, ... }: {
33 options.type = mkOption {
34 type = types.str;
35 default = name;
036 example = "d";
37 description = ''
38 The type of operation to perform on the file.
···29 };
30 };
31 default = {};
32+ type = attrsWith' "config-name" (attrsWith' "path" (attrsWith' "tmpfiles-type" (types.submodule ({ name, config, ... }: {
33 options.type = mkOption {
34 type = types.str;
35 default = name;
36+ defaultText = "‹tmpfiles-type›";
37 example = "d";
38 description = ''
39 The type of operation to perform on the file.
+2-2
nixos/tests/matrix/mjolnir.nix
···30 in
31 {
32 name = "mjolnir";
33- meta = with pkgs.lib; {
34- maintainers = teams.matrix.members;
35 };
3637 nodes = {
···30 in
31 {
32 name = "mjolnir";
33+ meta = {
34+ inherit (pkgs.mjolnir.meta) maintainers;
35 };
3637 nodes = {
+2-2
nixos/tests/matrix/synapse-workers.nix
···2 { pkgs, ... }:
3 {
4 name = "matrix-synapse-workers";
5- meta = with pkgs.lib; {
6- maintainers = teams.matrix.members;
7 };
89 nodes = {
···89 ps: with ps; [
90 mypy
91 pytest
92+ # this is to help development (e.g.: better diffs) inside devShell
93+ # only, do not use its helpers like `mocker`
94+ pytest-mock
95 ruff
96 ]
97 );
···2526 meta = with lib; {
27 description = "New GNU Portable Threads Library";
28- mainProgram = "npth-config";
29 longDescription = ''
30 This is a library to provide the GNU Pth API and thus a non-preemptive
31 threads implementation.
···2526 meta = with lib; {
27 description = "New GNU Portable Threads Library";
028 longDescription = ''
29 This is a library to provide the GNU Pth API and thus a non-preemptive
30 threads implementation.
···6869 nativeBuildInputs = [ autoreconfHook ];
7071- # For some reason libxml2 package headers are in subdirectory and thus aren’t
72- # picked up by stdenv’s C compiler wrapper (see ccWrapper_addCVars). This
73- # doesn’t really belong here and either should be part of libxml2 package or
74- # libxml2 in Nixpkgs can just fix their header paths.
75- env.NIX_CFLAGS_COMPILE = "-isystem ${libxml2.dev}/include/libxml2";
0000000007677 buildInputs =
78 [
···6869 nativeBuildInputs = [ autoreconfHook ];
7071+ env.NIX_CFLAGS_COMPILE = toString (
72+ [
73+ # For some reason libxml2 package headers are in subdirectory and thus aren’t
74+ # picked up by stdenv’s C compiler wrapper (see ccWrapper_addCVars). This
75+ # doesn’t really belong here and either should be part of libxml2 package or
76+ # libxml2 in Nixpkgs can just fix their header paths.
77+ "-isystem ${libxml2.dev}/include/libxml2"
78+ ]
79+ ++ lib.optionals stdenv.cc.isGNU [
80+ # fix build on GCC 14
81+ "-Wno-error=implicit-function-declaration"
82+ "-Wno-error=incompatible-pointer-types"
83+ ]
84+ );
8586 buildInputs =
87 [
···29}:
3031let
32- defaultVersion = "2024.10";
33 defaultSrc = fetchurl {
34 url = "https://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2";
35- hash = "sha256-so2vSsF+QxVjYweL9RApdYQTf231D87ZsS3zT2GpL7A=";
36 };
3738 # Dependencies for the tools need to be included as either native or cross,
···29}:
3031let
32+ defaultVersion = "2025.01";
33 defaultSrc = fetchurl {
34 url = "https://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2";
35+ hash = "sha256-ze99UHyT8bvZ8BXqm8IfoHQmhIFAVQGUWrxvhU1baG8=";
36 };
3738 # Dependencies for the tools need to be included as either native or cross,
···30 ]
31 },
32 "collectives": {
33- "hash": "sha256-IAnJZuaj6KW6kF4daIKxvCEDCViWu30gogm8q2/ooQs=",
34- "url": "https://github.com/nextcloud/collectives/releases/download/v2.16.0/collectives-2.16.0.tar.gz",
35- "version": "2.16.0",
36 "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.",
37 "homepage": "https://github.com/nextcloud/collectives",
38 "licenses": [
···40 ]
41 },
42 "contacts": {
43- "hash": "sha256-hqCDr7qEqsi8tZ9Woz9hsUm1HENK16FNz4pcQCto8S4=",
44- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v6.0.2/contacts-v6.0.2.tar.gz",
45- "version": "6.0.2",
46 "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.",
47 "homepage": "https://github.com/nextcloud/contacts#readme",
48 "licenses": [
···140 ]
141 },
142 "groupfolders": {
143- "hash": "sha256-7g18TdAQKLNKrKPZO+TNiUoHtncy6aLBy4KHq7j7VHo=",
144- "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v17.0.9/groupfolders-v17.0.9.tar.gz",
145- "version": "17.0.9",
146- "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.",
147 "homepage": "https://github.com/nextcloud/groupfolders",
148 "licenses": [
149 "agpl"
···190 ]
191 },
192 "mail": {
193- "hash": "sha256-i2gBkqRPvHyZL8raWTIordGVhY1NWi4KN1JLbsQd/8k=",
194- "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.19/mail-v3.7.19.tar.gz",
195- "version": "3.7.19",
196 "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)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟢/🟡/🟠/🔴\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).",
197 "homepage": "https://github.com/nextcloud/mail#readme",
198 "licenses": [
···250 ]
251 },
252 "onlyoffice": {
253- "hash": "sha256-YXj0tHU++S7YDMYj/Eg5KsSX3qBSYtyuPZfiOBQ8cjk=",
254- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.5.0/onlyoffice.tar.gz",
255- "version": "9.5.0",
256- "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.",
257 "homepage": "https://www.onlyoffice.com",
258 "licenses": [
259 "agpl"
···280 ]
281 },
282 "previewgenerator": {
283- "hash": "sha256-kTYmN/tAJwjj2KwnrKVIZa5DhyXHjuNWNskqJZxs4sY=",
284- "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.7.0/previewgenerator-v5.7.0.tar.gz",
285- "version": "5.7.0",
286 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
287 "homepage": "https://github.com/nextcloud/previewgenerator",
288 "licenses": [
···330 ]
331 },
332 "sociallogin": {
333- "hash": "sha256-P9OBXDW3+iOtC9/dQ/M89YxY3OQ0u5I8Z1XQLvYznEo=",
334- "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.8.4/release.tar.gz",
335- "version": "5.8.4",
336 "description": "# Social login\n\nMake possible create users and login via Telegram, OAuth or OpenID\n\nFor OAuth you must create app for certain providers. Login button appear at login page if app id specified. Settings are in \"Social login\" section of settings page.\n\n## Installation\n\nLogin to your NextCloud installation as an administrator and under \"Apps\" click \"Download and enable\" next to the \"Social Login\" app.\n\nSee below for setup and configuration instructions.\n\n\n\n## Custom OAuth2/OIDC groups\n\nYou can use groups from your custom provider. For that you should specify \"Groups claim\" in custom OAuth2/OIDC provider settings. That claim should be returned from provider in `id_token` or at user info endpoint. Format should be `array` or comma separated string. Eg (with claim named `roles`)\n\n```json\n{\"roles\": [\"admin\", \"user\"]}\n```\nor\n```json\n{\"roles\": \"admin,user\"}\n```\n\nAlso nested claims is supported. For example `resource_access.client-id.roles` for\n\n```json\n\"resource_access\": {\n \"client-id\": {\n \"roles\": [\n \"client-role-1\",\n \"client-role-2\"\n ]\n }\n}\n```\n\nThere is also support for setting the displayName:\n```\n{\"roles\": [{gid: 1, displayName: \"admin\"}, {gid: 2, displayName: \"user\"}]}\n```\n\n\nYou can use provider groups in two ways:\n\n1. Map provider groups to existing nextcloud groups\n2. Create provider groups in nextcloud and associate it to user (if appropriate option specified)\n\nIf you want sync groups on every login do not forget to check \"Update user profile every login\" setting\n\n## Examples for groups\n\n* You can find example how to configure WSO2IS for return roles claim with OIDC [here](https://medium.com/@dewni.matheesha/claim-mapping-and-retrieving-end-user-information-in-wso2is-cffd5f3937ff)\n* [GitLab OIDC allowing specific GitLab groups](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/gitlab.md)\n\n## Built-in OAuth providers\n\nYou can copy link of certain login button to get proper \"redirect url\" for OAuth app setting.\n\n* [Google](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/google.md)\n* [Amazon](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)\n* [Facebook](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/facebook.md)\n* [Twitter](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/twitter.md)\n* [GitHub](https://github.com/settings/developers)\n* [Discord](#configure-discord)\n* [Telegram](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/telegram.md)\n* PlexTv - you can use any title as app id\n* [Codeberg](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/codeberg.md)\n\nDetails about \"Allow login only from specified domain\" google setting you can find here [#44](https://github.com/zorn-v/nextcloud-social-login/issues/44)\nYou can use comma separated list for multiple domains\n\n## Config\n\nYou can use `'social_login_auto_redirect' => true` setting in `config.php` for auto redirect unauthorized users to social login if only one provider is configured.\nIf you want to temporary disable this function (e.g. for login as local admin), you can add `noredir=1` query parameter in url for login page. Something like `https://cloud.domain.com/login?noredir=1`\n\nTo set options for http client, you can use\n```php\n 'social_login_http_client' => [\n 'timeout' => 45,\n 'proxy' => 'socks4://127.0.0.1:9050', // Check https://curl.se/libcurl/c/CURLOPT_PROXY.html for allowed variants\n ],\n```\nin `config.php`\n\n### Configurate a provider via CLI\n\nYou can configure everything from commandline by using the occ utility. To setup a oidc-provider replace the variables and URLs with values that match your deployment.\n```bash\nphp occ config:app:set sociallogin custom_providers --value='{\"custom_oidc\": [{\"name\": \"gitlab_oidc\", \"title\": \"Gitlab\", \"authorizeUrl\": \"https://gitlab.my-domain.org/oauth/authorize\", \"tokenUrl\": \"https://gitlab.my-domain.org/oauth/token\", \"userInfoUrl\": \"https://gitlab.my-domain.org/oauth/userinfo\", \"logoutUrl\": \"\", \"clientId\": \"$my_application_id\", \"clientSecret\": \"$my_super_secret_secret\", \"scope\": \"openid\", \"groupsClaim\": \"groups\", \"style\": \"gitlab\", \"defaultGroup\": \"\"}]}'\n```\nto do this with docker you just need to add `docker exec -t -uwww-data CONTAINER_NAME` in front of the command, or run it interactively from `docker exec -it -uwww-data CONTAINER_NAME sh`\n\nTo find out how to configure other providers, just configure them in the GUI and take a look at the database afterwards:\n```\nmysql -u nextcloud -p nextcloud\nPassword: <yourpassword>\n\n> SELECT * FROM oc_appconfig WHERE appid='sociallogin';\n```\n\nOr just run\n\n`docker exec -t -uwww-data CONTAINER_NAME php occ config:app:get sociallogin custom_providers`\n\n### Configure Discord\n\nTo properly configure discord you have to:\n\n1. Create new discord application on [DiscordApp developers](https://discordapp.com/developers/applications/me#top)\n2. Open tab `Settings -> OAuth2 -> General`. In `Redirects` add new redirection link looking like this: `https://nextcloud.mydomain.com/apps/sociallogin/oauth/discord`.\n3. Copy `CLIENT ID` and generate and copy `CLIENT SECRET`\n4. Open in Nextcloud `Settings -> Social Login` and paste `CLIENT ID` into field `App id` and `CLIENT SECRET` into `Secret`.\n5. Select default group for users created this way.\n6. For group mapping check [#395](https://github.com/zorn-v/nextcloud-social-login/pull/395)\n\n## Hint\n\n### About Callback(Reply) Url\nYou can copy link from specific login button on login page and paste it on provider's website as callback url. To make proper button visible, just fill certain provider settings with random data and change it later.\n\nSome users may get strange reply(Callback) url error from provider even if you pasted the right url, that's because your nextcloud server may generate http urls when you are actually using https.\nPlease set 'overwriteprotocol' => 'https', in your config.php file.",
337 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
338 "licenses": [
···340 ]
341 },
342 "spreed": {
343- "hash": "sha256-8C2TopybeFczpaNQF3IWeVh3uPXmNjQ1mdcWTyYOsZw=",
344- "url": "https://github.com/nextcloud-releases/spreed/releases/download/v19.0.12/spreed-v19.0.12.tar.gz",
345- "version": "19.0.12",
346 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat** Nextcloud Talk comes with a simple text chat, allowing you to share or upload files from your Nextcloud Files app or local device and mention other participants.\n* 👥 **Private, group, public and password protected calls!** Invite someone, a whole group or send a public link to invite to a call.\n* 🌐 **Federated chats** Chat with other Nextcloud users on their servers\n* 💻 **Screen sharing!** Share your screen with the participants of your call.\n* 🚀 **Integration with other Nextcloud apps** like Files, Calendar, User status, Dashboard, Flow, Maps, Smart picker, Contacts, Deck, and many more.\n* 🌉 **Sync with other chat solutions** With [Matterbridge](https://github.com/42wim/matterbridge/) being integrated in Talk, you can easily sync a lot of other chat solutions to Nextcloud Talk and vice-versa.",
347 "homepage": "https://github.com/nextcloud/spreed",
348 "licenses": [
···30 ]
31 },
32 "collectives": {
33+ "hash": "sha256-1BEK5T+6w8yLSXyj/Me8QMls/LSWaor5TpvC2HK3/4U=",
34+ "url": "https://github.com/nextcloud/collectives/releases/download/v2.16.1/collectives-2.16.1.tar.gz",
35+ "version": "2.16.1",
36 "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.",
37 "homepage": "https://github.com/nextcloud/collectives",
38 "licenses": [
···40 ]
41 },
42 "contacts": {
43+ "hash": "sha256-o7RoBhg0UFzZoxXj1Qovbheq1i7wBHnn4hSnEbc/D/c=",
44+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v6.0.3/contacts-v6.0.3.tar.gz",
45+ "version": "6.0.3",
46 "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.",
47 "homepage": "https://github.com/nextcloud/contacts#readme",
48 "licenses": [
···140 ]
141 },
142 "groupfolders": {
143+ "hash": "sha256-yfTZjAsmv2wdMNNP1Tm0fmzSIlUwRfMraNPgFEHW238=",
144+ "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v17.0.10/groupfolders-v17.0.10.tar.gz",
145+ "version": "17.0.10",
146+ "description": "Admin configured folders shared with everyone in a team.\n\nFolders can be configured from *Team folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more teams, control their write/sharing permissions and assign a quota for the folder.",
147 "homepage": "https://github.com/nextcloud/groupfolders",
148 "licenses": [
149 "agpl"
···190 ]
191 },
192 "mail": {
193+ "hash": "sha256-YGgJgWZYnJuhhHxabx/tUmcnmfDgjWiZUBnhGThihrU=",
194+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.7.20/mail-v3.7.20.tar.gz",
195+ "version": "3.7.20",
196 "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)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟢/🟡/🟠/🔴\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).",
197 "homepage": "https://github.com/nextcloud/mail#readme",
198 "licenses": [
···250 ]
251 },
252 "onlyoffice": {
253+ "hash": "sha256-zAhrnZ/rzzo6+ycozd8ihxIHVRHmQ+haudts2PcxnoM=",
254+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.6.0/onlyoffice.tar.gz",
255+ "version": "9.6.0",
256+ "description": "ONLYOFFICE app 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.",
257 "homepage": "https://www.onlyoffice.com",
258 "licenses": [
259 "agpl"
···280 ]
281 },
282 "previewgenerator": {
283+ "hash": "sha256-dPUvtVFtSqlG9M1RXZ8u7nL3wgK5yFU2/pL9pFLjisc=",
284+ "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.8.0/previewgenerator-v5.8.0.tar.gz",
285+ "version": "5.8.0",
286 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
287 "homepage": "https://github.com/nextcloud/previewgenerator",
288 "licenses": [
···330 ]
331 },
332 "sociallogin": {
333+ "hash": "sha256-XJbeVUYr3NZvynZyRlRtc0NNEJxcIHjwNst/J2+IBUM=",
334+ "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.9.1/release.tar.gz",
335+ "version": "5.9.1",
336 "description": "# Social login\n\nMake possible create users and login via Telegram, OAuth or OpenID\n\nFor OAuth you must create app for certain providers. Login button appear at login page if app id specified. Settings are in \"Social login\" section of settings page.\n\n## Installation\n\nLogin to your NextCloud installation as an administrator and under \"Apps\" click \"Download and enable\" next to the \"Social Login\" app.\n\nSee below for setup and configuration instructions.\n\n\n\n## Custom OAuth2/OIDC groups\n\nYou can use groups from your custom provider. For that you should specify \"Groups claim\" in custom OAuth2/OIDC provider settings. That claim should be returned from provider in `id_token` or at user info endpoint. Format should be `array` or comma separated string. Eg (with claim named `roles`)\n\n```json\n{\"roles\": [\"admin\", \"user\"]}\n```\nor\n```json\n{\"roles\": \"admin,user\"}\n```\n\nAlso nested claims is supported. For example `resource_access.client-id.roles` for\n\n```json\n\"resource_access\": {\n \"client-id\": {\n \"roles\": [\n \"client-role-1\",\n \"client-role-2\"\n ]\n }\n}\n```\n\nThere is also support for setting the displayName:\n```\n{\"roles\": [{gid: 1, displayName: \"admin\"}, {gid: 2, displayName: \"user\"}]}\n```\n\n\nYou can use provider groups in two ways:\n\n1. Map provider groups to existing nextcloud groups\n2. Create provider groups in nextcloud and associate it to user (if appropriate option specified)\n\nIf you want sync groups on every login do not forget to check \"Update user profile every login\" setting\n\n## Examples for groups\n\n* You can find example how to configure WSO2IS for return roles claim with OIDC [here](https://medium.com/@dewni.matheesha/claim-mapping-and-retrieving-end-user-information-in-wso2is-cffd5f3937ff)\n* [GitLab OIDC allowing specific GitLab groups](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/gitlab.md)\n\n## Built-in OAuth providers\n\nYou can copy link of certain login button to get proper \"redirect url\" for OAuth app setting.\n\n* [Google](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/google.md)\n* [Amazon](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)\n* [Facebook](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/facebook.md)\n* [Twitter](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/twitter.md)\n* [GitHub](https://github.com/settings/developers)\n* [Discord](#configure-discord)\n* [Telegram](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/telegram.md)\n* PlexTv - you can use any title as app id\n* [Codeberg](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/codeberg.md)\n\nDetails about \"Allow login only from specified domain\" google setting you can find here [#44](https://github.com/zorn-v/nextcloud-social-login/issues/44)\nYou can use comma separated list for multiple domains\n\n## Config\n\nYou can use `'social_login_auto_redirect' => true` setting in `config.php` for auto redirect unauthorized users to social login if only one provider is configured.\nIf you want to temporary disable this function (e.g. for login as local admin), you can add `noredir=1` query parameter in url for login page. Something like `https://cloud.domain.com/login?noredir=1`\n\nTo set options for http client, you can use\n```php\n 'social_login_http_client' => [\n 'timeout' => 45,\n 'proxy' => 'socks4://127.0.0.1:9050', // Check https://curl.se/libcurl/c/CURLOPT_PROXY.html for allowed variants\n ],\n```\nin `config.php`\n\n### Configurate a provider via CLI\n\nYou can configure everything from commandline by using the occ utility. To setup a oidc-provider replace the variables and URLs with values that match your deployment.\n```bash\nphp occ config:app:set sociallogin custom_providers --value='{\"custom_oidc\": [{\"name\": \"gitlab_oidc\", \"title\": \"Gitlab\", \"authorizeUrl\": \"https://gitlab.my-domain.org/oauth/authorize\", \"tokenUrl\": \"https://gitlab.my-domain.org/oauth/token\", \"userInfoUrl\": \"https://gitlab.my-domain.org/oauth/userinfo\", \"logoutUrl\": \"\", \"clientId\": \"$my_application_id\", \"clientSecret\": \"$my_super_secret_secret\", \"scope\": \"openid\", \"groupsClaim\": \"groups\", \"style\": \"gitlab\", \"defaultGroup\": \"\"}]}'\n```\nto do this with docker you just need to add `docker exec -t -uwww-data CONTAINER_NAME` in front of the command, or run it interactively from `docker exec -it -uwww-data CONTAINER_NAME sh`\n\nTo find out how to configure other providers, just configure them in the GUI and take a look at the database afterwards:\n```\nmysql -u nextcloud -p nextcloud\nPassword: <yourpassword>\n\n> SELECT * FROM oc_appconfig WHERE appid='sociallogin';\n```\n\nOr just run\n\n`docker exec -t -uwww-data CONTAINER_NAME php occ config:app:get sociallogin custom_providers`\n\n### Configure Discord\n\nTo properly configure discord you have to:\n\n1. Create new discord application on [DiscordApp developers](https://discordapp.com/developers/applications/me#top)\n2. Open tab `Settings -> OAuth2 -> General`. In `Redirects` add new redirection link looking like this: `https://nextcloud.mydomain.com/apps/sociallogin/oauth/discord`.\n3. Copy `CLIENT ID` and generate and copy `CLIENT SECRET`\n4. Open in Nextcloud `Settings -> Social Login` and paste `CLIENT ID` into field `App id` and `CLIENT SECRET` into `Secret`.\n5. Select default group for users created this way.\n6. For group mapping check [#395](https://github.com/zorn-v/nextcloud-social-login/pull/395)\n\n## Hint\n\n### About Callback(Reply) Url\nYou can copy link from specific login button on login page and paste it on provider's website as callback url. To make proper button visible, just fill certain provider settings with random data and change it later.\n\nSome users may get strange reply(Callback) url error from provider even if you pasted the right url, that's because your nextcloud server may generate http urls when you are actually using https.\nPlease set 'overwriteprotocol' => 'https', in your config.php file.",
337 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
338 "licenses": [
···340 ]
341 },
342 "spreed": {
343+ "hash": "sha256-JJp0dzFKJttDBuPOavraF7odo/0tVoDAeMPHVkmB78s=",
344+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v19.0.13/spreed-v19.0.13.tar.gz",
345+ "version": "19.0.13",
346 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat** Nextcloud Talk comes with a simple text chat, allowing you to share or upload files from your Nextcloud Files app or local device and mention other participants.\n* 👥 **Private, group, public and password protected calls!** Invite someone, a whole group or send a public link to invite to a call.\n* 🌐 **Federated chats** Chat with other Nextcloud users on their servers\n* 💻 **Screen sharing!** Share your screen with the participants of your call.\n* 🚀 **Integration with other Nextcloud apps** like Files, Calendar, User status, Dashboard, Flow, Maps, Smart picker, Contacts, Deck, and many more.\n* 🌉 **Sync with other chat solutions** With [Matterbridge](https://github.com/42wim/matterbridge/) being integrated in Talk, you can easily sync a lot of other chat solutions to Nextcloud Talk and vice-versa.",
347 "homepage": "https://github.com/nextcloud/spreed",
348 "licenses": [
+23-23
pkgs/servers/nextcloud/packages/30.json
···20 ]
21 },
22 "calendar": {
23- "hash": "sha256-nroc7URZtN5LhGg4wYgr3wD0k8k3vYj9k/V4H0JF2C0=",
24- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v5.0.9/calendar-v5.0.9.tar.gz",
25- "version": "5.0.9",
26 "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.",
27 "homepage": "https://github.com/nextcloud/calendar/",
28 "licenses": [
···30 ]
31 },
32 "collectives": {
33- "hash": "sha256-IAnJZuaj6KW6kF4daIKxvCEDCViWu30gogm8q2/ooQs=",
34- "url": "https://github.com/nextcloud/collectives/releases/download/v2.16.0/collectives-2.16.0.tar.gz",
35- "version": "2.16.0",
36 "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.",
37 "homepage": "https://github.com/nextcloud/collectives",
38 "licenses": [
···140 ]
141 },
142 "groupfolders": {
143- "hash": "sha256-MPNSmqVzYSwEXM9ZyV7xEvUrmH8WYdpKHPcVWWQpt8M=",
144- "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v18.0.9/groupfolders-v18.0.9.tar.gz",
145- "version": "18.0.9",
146- "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.",
147 "homepage": "https://github.com/nextcloud/groupfolders",
148 "licenses": [
149 "agpl"
···250 ]
251 },
252 "onlyoffice": {
253- "hash": "sha256-YXj0tHU++S7YDMYj/Eg5KsSX3qBSYtyuPZfiOBQ8cjk=",
254- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.5.0/onlyoffice.tar.gz",
255- "version": "9.5.0",
256- "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.",
257 "homepage": "https://www.onlyoffice.com",
258 "licenses": [
259 "agpl"
···280 ]
281 },
282 "previewgenerator": {
283- "hash": "sha256-kTYmN/tAJwjj2KwnrKVIZa5DhyXHjuNWNskqJZxs4sY=",
284- "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.7.0/previewgenerator-v5.7.0.tar.gz",
285- "version": "5.7.0",
286 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
287 "homepage": "https://github.com/nextcloud/previewgenerator",
288 "licenses": [
···330 ]
331 },
332 "sociallogin": {
333- "hash": "sha256-P9OBXDW3+iOtC9/dQ/M89YxY3OQ0u5I8Z1XQLvYznEo=",
334- "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.8.4/release.tar.gz",
335- "version": "5.8.4",
336 "description": "# Social login\n\nMake possible create users and login via Telegram, OAuth or OpenID\n\nFor OAuth you must create app for certain providers. Login button appear at login page if app id specified. Settings are in \"Social login\" section of settings page.\n\n## Installation\n\nLogin to your NextCloud installation as an administrator and under \"Apps\" click \"Download and enable\" next to the \"Social Login\" app.\n\nSee below for setup and configuration instructions.\n\n\n\n## Custom OAuth2/OIDC groups\n\nYou can use groups from your custom provider. For that you should specify \"Groups claim\" in custom OAuth2/OIDC provider settings. That claim should be returned from provider in `id_token` or at user info endpoint. Format should be `array` or comma separated string. Eg (with claim named `roles`)\n\n```json\n{\"roles\": [\"admin\", \"user\"]}\n```\nor\n```json\n{\"roles\": \"admin,user\"}\n```\n\nAlso nested claims is supported. For example `resource_access.client-id.roles` for\n\n```json\n\"resource_access\": {\n \"client-id\": {\n \"roles\": [\n \"client-role-1\",\n \"client-role-2\"\n ]\n }\n}\n```\n\nThere is also support for setting the displayName:\n```\n{\"roles\": [{gid: 1, displayName: \"admin\"}, {gid: 2, displayName: \"user\"}]}\n```\n\n\nYou can use provider groups in two ways:\n\n1. Map provider groups to existing nextcloud groups\n2. Create provider groups in nextcloud and associate it to user (if appropriate option specified)\n\nIf you want sync groups on every login do not forget to check \"Update user profile every login\" setting\n\n## Examples for groups\n\n* You can find example how to configure WSO2IS for return roles claim with OIDC [here](https://medium.com/@dewni.matheesha/claim-mapping-and-retrieving-end-user-information-in-wso2is-cffd5f3937ff)\n* [GitLab OIDC allowing specific GitLab groups](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/gitlab.md)\n\n## Built-in OAuth providers\n\nYou can copy link of certain login button to get proper \"redirect url\" for OAuth app setting.\n\n* [Google](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/google.md)\n* [Amazon](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)\n* [Facebook](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/facebook.md)\n* [Twitter](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/twitter.md)\n* [GitHub](https://github.com/settings/developers)\n* [Discord](#configure-discord)\n* [Telegram](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/telegram.md)\n* PlexTv - you can use any title as app id\n* [Codeberg](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/codeberg.md)\n\nDetails about \"Allow login only from specified domain\" google setting you can find here [#44](https://github.com/zorn-v/nextcloud-social-login/issues/44)\nYou can use comma separated list for multiple domains\n\n## Config\n\nYou can use `'social_login_auto_redirect' => true` setting in `config.php` for auto redirect unauthorized users to social login if only one provider is configured.\nIf you want to temporary disable this function (e.g. for login as local admin), you can add `noredir=1` query parameter in url for login page. Something like `https://cloud.domain.com/login?noredir=1`\n\nTo set options for http client, you can use\n```php\n 'social_login_http_client' => [\n 'timeout' => 45,\n 'proxy' => 'socks4://127.0.0.1:9050', // Check https://curl.se/libcurl/c/CURLOPT_PROXY.html for allowed variants\n ],\n```\nin `config.php`\n\n### Configurate a provider via CLI\n\nYou can configure everything from commandline by using the occ utility. To setup a oidc-provider replace the variables and URLs with values that match your deployment.\n```bash\nphp occ config:app:set sociallogin custom_providers --value='{\"custom_oidc\": [{\"name\": \"gitlab_oidc\", \"title\": \"Gitlab\", \"authorizeUrl\": \"https://gitlab.my-domain.org/oauth/authorize\", \"tokenUrl\": \"https://gitlab.my-domain.org/oauth/token\", \"userInfoUrl\": \"https://gitlab.my-domain.org/oauth/userinfo\", \"logoutUrl\": \"\", \"clientId\": \"$my_application_id\", \"clientSecret\": \"$my_super_secret_secret\", \"scope\": \"openid\", \"groupsClaim\": \"groups\", \"style\": \"gitlab\", \"defaultGroup\": \"\"}]}'\n```\nto do this with docker you just need to add `docker exec -t -uwww-data CONTAINER_NAME` in front of the command, or run it interactively from `docker exec -it -uwww-data CONTAINER_NAME sh`\n\nTo find out how to configure other providers, just configure them in the GUI and take a look at the database afterwards:\n```\nmysql -u nextcloud -p nextcloud\nPassword: <yourpassword>\n\n> SELECT * FROM oc_appconfig WHERE appid='sociallogin';\n```\n\nOr just run\n\n`docker exec -t -uwww-data CONTAINER_NAME php occ config:app:get sociallogin custom_providers`\n\n### Configure Discord\n\nTo properly configure discord you have to:\n\n1. Create new discord application on [DiscordApp developers](https://discordapp.com/developers/applications/me#top)\n2. Open tab `Settings -> OAuth2 -> General`. In `Redirects` add new redirection link looking like this: `https://nextcloud.mydomain.com/apps/sociallogin/oauth/discord`.\n3. Copy `CLIENT ID` and generate and copy `CLIENT SECRET`\n4. Open in Nextcloud `Settings -> Social Login` and paste `CLIENT ID` into field `App id` and `CLIENT SECRET` into `Secret`.\n5. Select default group for users created this way.\n6. For group mapping check [#395](https://github.com/zorn-v/nextcloud-social-login/pull/395)\n\n## Hint\n\n### About Callback(Reply) Url\nYou can copy link from specific login button on login page and paste it on provider's website as callback url. To make proper button visible, just fill certain provider settings with random data and change it later.\n\nSome users may get strange reply(Callback) url error from provider even if you pasted the right url, that's because your nextcloud server may generate http urls when you are actually using https.\nPlease set 'overwriteprotocol' => 'https', in your config.php file.",
337 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
338 "licenses": [
···340 ]
341 },
342 "spreed": {
343- "hash": "sha256-j2r0dJ5QYrGHFbCfuuyOmXR7oEN78Nagn5Qb8kzmknA=",
344- "url": "https://github.com/nextcloud-releases/spreed/releases/download/v20.1.3/spreed-v20.1.3.tar.gz",
345- "version": "20.1.3",
346 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat** Nextcloud Talk comes with a simple text chat, allowing you to share or upload files from your Nextcloud Files app or local device and mention other participants.\n* 👥 **Private, group, public and password protected calls!** Invite someone, a whole group or send a public link to invite to a call.\n* 🌐 **Federated chats** Chat with other Nextcloud users on their servers\n* 💻 **Screen sharing!** Share your screen with the participants of your call.\n* 🚀 **Integration with other Nextcloud apps** like Files, Calendar, User status, Dashboard, Flow, Maps, Smart picker, Contacts, Deck, and many more.\n* 🌉 **Sync with other chat solutions** With [Matterbridge](https://github.com/42wim/matterbridge/) being integrated in Talk, you can easily sync a lot of other chat solutions to Nextcloud Talk and vice-versa.",
347 "homepage": "https://github.com/nextcloud/spreed",
348 "licenses": [
···20 ]
21 },
22 "calendar": {
23+ "hash": "sha256-QWJJOj4Iy/BLXWzHihoQaAhFkU05plZ/AV55QrW0Pag=",
24+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v5.0.10/calendar-v5.0.10.tar.gz",
25+ "version": "5.0.10",
26 "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.",
27 "homepage": "https://github.com/nextcloud/calendar/",
28 "licenses": [
···30 ]
31 },
32 "collectives": {
33+ "hash": "sha256-1BEK5T+6w8yLSXyj/Me8QMls/LSWaor5TpvC2HK3/4U=",
34+ "url": "https://github.com/nextcloud/collectives/releases/download/v2.16.1/collectives-2.16.1.tar.gz",
35+ "version": "2.16.1",
36 "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.",
37 "homepage": "https://github.com/nextcloud/collectives",
38 "licenses": [
···140 ]
141 },
142 "groupfolders": {
143+ "hash": "sha256-LR+b5weiFGsk/uozT39rwCeo98PjLcJOMyn5B/OgkvU=",
144+ "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v18.0.10/groupfolders-v18.0.10.tar.gz",
145+ "version": "18.0.10",
146+ "description": "Admin configured folders shared with everyone in a team.\n\nFolders can be configured from *Team folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more teams, control their write/sharing permissions and assign a quota for the folder.",
147 "homepage": "https://github.com/nextcloud/groupfolders",
148 "licenses": [
149 "agpl"
···250 ]
251 },
252 "onlyoffice": {
253+ "hash": "sha256-zAhrnZ/rzzo6+ycozd8ihxIHVRHmQ+haudts2PcxnoM=",
254+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.6.0/onlyoffice.tar.gz",
255+ "version": "9.6.0",
256+ "description": "ONLYOFFICE app 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.",
257 "homepage": "https://www.onlyoffice.com",
258 "licenses": [
259 "agpl"
···280 ]
281 },
282 "previewgenerator": {
283+ "hash": "sha256-dPUvtVFtSqlG9M1RXZ8u7nL3wgK5yFU2/pL9pFLjisc=",
284+ "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.8.0/previewgenerator-v5.8.0.tar.gz",
285+ "version": "5.8.0",
286 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
287 "homepage": "https://github.com/nextcloud/previewgenerator",
288 "licenses": [
···330 ]
331 },
332 "sociallogin": {
333+ "hash": "sha256-XJbeVUYr3NZvynZyRlRtc0NNEJxcIHjwNst/J2+IBUM=",
334+ "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.9.1/release.tar.gz",
335+ "version": "5.9.1",
336 "description": "# Social login\n\nMake possible create users and login via Telegram, OAuth or OpenID\n\nFor OAuth you must create app for certain providers. Login button appear at login page if app id specified. Settings are in \"Social login\" section of settings page.\n\n## Installation\n\nLogin to your NextCloud installation as an administrator and under \"Apps\" click \"Download and enable\" next to the \"Social Login\" app.\n\nSee below for setup and configuration instructions.\n\n\n\n## Custom OAuth2/OIDC groups\n\nYou can use groups from your custom provider. For that you should specify \"Groups claim\" in custom OAuth2/OIDC provider settings. That claim should be returned from provider in `id_token` or at user info endpoint. Format should be `array` or comma separated string. Eg (with claim named `roles`)\n\n```json\n{\"roles\": [\"admin\", \"user\"]}\n```\nor\n```json\n{\"roles\": \"admin,user\"}\n```\n\nAlso nested claims is supported. For example `resource_access.client-id.roles` for\n\n```json\n\"resource_access\": {\n \"client-id\": {\n \"roles\": [\n \"client-role-1\",\n \"client-role-2\"\n ]\n }\n}\n```\n\nThere is also support for setting the displayName:\n```\n{\"roles\": [{gid: 1, displayName: \"admin\"}, {gid: 2, displayName: \"user\"}]}\n```\n\n\nYou can use provider groups in two ways:\n\n1. Map provider groups to existing nextcloud groups\n2. Create provider groups in nextcloud and associate it to user (if appropriate option specified)\n\nIf you want sync groups on every login do not forget to check \"Update user profile every login\" setting\n\n## Examples for groups\n\n* You can find example how to configure WSO2IS for return roles claim with OIDC [here](https://medium.com/@dewni.matheesha/claim-mapping-and-retrieving-end-user-information-in-wso2is-cffd5f3937ff)\n* [GitLab OIDC allowing specific GitLab groups](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/gitlab.md)\n\n## Built-in OAuth providers\n\nYou can copy link of certain login button to get proper \"redirect url\" for OAuth app setting.\n\n* [Google](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/google.md)\n* [Amazon](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)\n* [Facebook](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/facebook.md)\n* [Twitter](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/twitter.md)\n* [GitHub](https://github.com/settings/developers)\n* [Discord](#configure-discord)\n* [Telegram](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/telegram.md)\n* PlexTv - you can use any title as app id\n* [Codeberg](https://github.com/zorn-v/nextcloud-social-login/blob/master/docs/sso/codeberg.md)\n\nDetails about \"Allow login only from specified domain\" google setting you can find here [#44](https://github.com/zorn-v/nextcloud-social-login/issues/44)\nYou can use comma separated list for multiple domains\n\n## Config\n\nYou can use `'social_login_auto_redirect' => true` setting in `config.php` for auto redirect unauthorized users to social login if only one provider is configured.\nIf you want to temporary disable this function (e.g. for login as local admin), you can add `noredir=1` query parameter in url for login page. Something like `https://cloud.domain.com/login?noredir=1`\n\nTo set options for http client, you can use\n```php\n 'social_login_http_client' => [\n 'timeout' => 45,\n 'proxy' => 'socks4://127.0.0.1:9050', // Check https://curl.se/libcurl/c/CURLOPT_PROXY.html for allowed variants\n ],\n```\nin `config.php`\n\n### Configurate a provider via CLI\n\nYou can configure everything from commandline by using the occ utility. To setup a oidc-provider replace the variables and URLs with values that match your deployment.\n```bash\nphp occ config:app:set sociallogin custom_providers --value='{\"custom_oidc\": [{\"name\": \"gitlab_oidc\", \"title\": \"Gitlab\", \"authorizeUrl\": \"https://gitlab.my-domain.org/oauth/authorize\", \"tokenUrl\": \"https://gitlab.my-domain.org/oauth/token\", \"userInfoUrl\": \"https://gitlab.my-domain.org/oauth/userinfo\", \"logoutUrl\": \"\", \"clientId\": \"$my_application_id\", \"clientSecret\": \"$my_super_secret_secret\", \"scope\": \"openid\", \"groupsClaim\": \"groups\", \"style\": \"gitlab\", \"defaultGroup\": \"\"}]}'\n```\nto do this with docker you just need to add `docker exec -t -uwww-data CONTAINER_NAME` in front of the command, or run it interactively from `docker exec -it -uwww-data CONTAINER_NAME sh`\n\nTo find out how to configure other providers, just configure them in the GUI and take a look at the database afterwards:\n```\nmysql -u nextcloud -p nextcloud\nPassword: <yourpassword>\n\n> SELECT * FROM oc_appconfig WHERE appid='sociallogin';\n```\n\nOr just run\n\n`docker exec -t -uwww-data CONTAINER_NAME php occ config:app:get sociallogin custom_providers`\n\n### Configure Discord\n\nTo properly configure discord you have to:\n\n1. Create new discord application on [DiscordApp developers](https://discordapp.com/developers/applications/me#top)\n2. Open tab `Settings -> OAuth2 -> General`. In `Redirects` add new redirection link looking like this: `https://nextcloud.mydomain.com/apps/sociallogin/oauth/discord`.\n3. Copy `CLIENT ID` and generate and copy `CLIENT SECRET`\n4. Open in Nextcloud `Settings -> Social Login` and paste `CLIENT ID` into field `App id` and `CLIENT SECRET` into `Secret`.\n5. Select default group for users created this way.\n6. For group mapping check [#395](https://github.com/zorn-v/nextcloud-social-login/pull/395)\n\n## Hint\n\n### About Callback(Reply) Url\nYou can copy link from specific login button on login page and paste it on provider's website as callback url. To make proper button visible, just fill certain provider settings with random data and change it later.\n\nSome users may get strange reply(Callback) url error from provider even if you pasted the right url, that's because your nextcloud server may generate http urls when you are actually using https.\nPlease set 'overwriteprotocol' => 'https', in your config.php file.",
337 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
338 "licenses": [
···340 ]
341 },
342 "spreed": {
343+ "hash": "sha256-+MYplCq6Kx1UiEz+Isbit7kQNhe4dncy6W+y7eMzuiA=",
344+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v20.1.4/spreed-v20.1.4.tar.gz",
345+ "version": "20.1.4",
346 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat** Nextcloud Talk comes with a simple text chat, allowing you to share or upload files from your Nextcloud Files app or local device and mention other participants.\n* 👥 **Private, group, public and password protected calls!** Invite someone, a whole group or send a public link to invite to a call.\n* 🌐 **Federated chats** Chat with other Nextcloud users on their servers\n* 💻 **Screen sharing!** Share your screen with the participants of your call.\n* 🚀 **Integration with other Nextcloud apps** like Files, Calendar, User status, Dashboard, Flow, Maps, Smart picker, Contacts, Deck, and many more.\n* 🌉 **Sync with other chat solutions** With [Matterbridge](https://github.com/42wim/matterbridge/) being integrated in Talk, you can easily sync a lot of other chat solutions to Nextcloud Talk and vice-versa.",
347 "homepage": "https://github.com/nextcloud/spreed",
348 "licenses": [