···198 fetchFromGitHub,
199}:
200201-buildNpmPackage rec {
202 pname = "flood";
203 version = "4.7.0";
204205 src = fetchFromGitHub {
206 owner = "jesec";
207- repo = pname;
208- rev = "v${version}";
209 hash = "sha256-BR+ZGkBBfd0dSQqAvujsbgsEPFYw/ThrylxUbOksYxM=";
210 };
211···222 license = lib.licenses.gpl3Only;
223 maintainers = with lib.maintainers; [ winter ];
224 };
225-}
226```
227228In the default `installPhase` set by `buildNpmPackage`, it uses `npm pack --json --dry-run` to decide what files to install in `$out/lib/node_modules/$name/`, where `$name` is the `name` string defined in the package's `package.json`.
···646647```nix
648{
0000649 buildPhase = ''
650- export HOME=$(mktemp -d)
0651 yarn --offline build
00652 '';
653}
654```
···198 fetchFromGitHub,
199}:
200201+buildNpmPackage (finalAttrs: {
202 pname = "flood";
203 version = "4.7.0";
204205 src = fetchFromGitHub {
206 owner = "jesec";
207+ repo = "flood";
208+ tag = "v${finalAttrs.version}";
209 hash = "sha256-BR+ZGkBBfd0dSQqAvujsbgsEPFYw/ThrylxUbOksYxM=";
210 };
211···222 license = lib.licenses.gpl3Only;
223 maintainers = with lib.maintainers; [ winter ];
224 };
225+})
226```
227228In the default `installPhase` set by `buildNpmPackage`, it uses `npm pack --json --dry-run` to decide what files to install in `$out/lib/node_modules/$name/`, where `$name` is the `name` string defined in the package's `package.json`.
···646647```nix
648{
649+ nativeBuildInputs = [
650+ writableTmpDirAsHomeHook
651+ ];
652+653 buildPhase = ''
654+ runHook preBuild
655+656 yarn --offline build
657+658+ runHook postBuild
659 '';
660}
661```
+2-3
doc/languages-frameworks/lisp.section.md
···135- names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`)
136- `_` in names is converted to `__` for reversibility
137138-139## Defining packages manually inside Nixpkgs {#lisp-defining-packages-inside}
140141Packages that for some reason are not in Quicklisp, and so cannot be
···185 domain = "gitlab.common-lisp.net";
186 owner = "alexandria";
187 repo = "alexandria";
188- rev = "v${version}";
189 hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
190 };
191 };
···212 domain = "gitlab.common-lisp.net";
213 owner = "alexandria";
214 repo = "alexandria";
215- rev = "v${version}";
216 hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
217 };
218})
···135- names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`)
136- `_` in names is converted to `__` for reversibility
1370138## Defining packages manually inside Nixpkgs {#lisp-defining-packages-inside}
139140Packages that for some reason are not in Quicklisp, and so cannot be
···184 domain = "gitlab.common-lisp.net";
185 owner = "alexandria";
186 repo = "alexandria";
187+ tag = "v${version}";
188 hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
189 };
190 };
···211 domain = "gitlab.common-lisp.net";
212 owner = "alexandria";
213 repo = "alexandria";
214+ tag = "v${version}";
215 hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
216 };
217})
+53-17
doc/languages-frameworks/maven.section.md
···2324 src = fetchFromGitHub {
25 owner = "intoolswetrust";
26- repo = pname;
27- rev = "${pname}-${version}";
28 hash = "sha256-rRttA5H0A0c44loBzbKH7Waoted3IsOgxGCD2VM0U/Q=";
29 };
30···33 nativeBuildInputs = [ makeWrapper ];
3435 installPhase = ''
0036 mkdir -p $out/bin $out/share/jd-cli
37 install -Dm644 jd-cli/target/jd-cli.jar $out/share/jd-cli
3839 makeWrapper ${jre}/bin/java $out/bin/jd-cli \
40 --add-flags "-jar $out/share/jd-cli/jd-cli.jar"
0041 '';
4243 meta = {
···301 buildInputs = [ maven ];
302 src = ./.; # or fetchFromGitHub, cleanSourceWith, etc
303 buildPhase = ''
00304 mvn package -Dmaven.repo.local=$out
00305 '';
306307 # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
308 installPhase = ''
00309 find $out -type f \
310 -name \*.lastUpdated -or \
311 -name resolver-status.properties -or \
312 -name _remote.repositories \
313 -delete
00314 '';
315316 # don't do any fixup
···354 maven,
355 callPackage,
356}:
357-# pick a repository derivation, here we will use buildMaven
358let
0359 repository = callPackage ./build-maven-repository.nix { };
360in
361-stdenv.mkDerivation rec {
362 pname = "maven-demo";
363 version = "1.0";
364···366 buildInputs = [ maven ];
367368 buildPhase = ''
00369 echo "Using repository ${repository}"
370 mvn --offline -Dmaven.repo.local=${repository} package;
00371 '';
372373 installPhase = ''
374- install -Dm644 target/${pname}-${version}.jar $out/share/java
0000375 '';
376-}
377```
378379::: {.tip}
···421let
422 repository = callPackage ./build-maven-repository.nix { };
423in
424-stdenv.mkDerivation rec {
425 pname = "maven-demo";
426 version = "1.0";
427···430 buildInputs = [ maven ];
431432 buildPhase = ''
00433 echo "Using repository ${repository}"
434 mvn --offline -Dmaven.repo.local=${repository} package;
00435 '';
436437 installPhase = ''
00438 mkdir -p $out/bin
439440 classpath=$(find ${repository} -name "*.jar" -printf ':%h/%f');
441- install -Dm644 target/${pname}-${version}.jar $out/share/java
442 # create a wrapper that will automatically set the classpath
443 # this should be the paths from the dependency derivation
444- makeWrapper ${jre}/bin/java $out/bin/${pname} \
445- --add-flags "-classpath $out/share/java/${pname}-${version}.jar:''${classpath#:}" \
446 --add-flags "Main"
00447 '';
448-}
449```
450451#### MANIFEST file via Maven Plugin {#manifest-file-via-maven-plugin}
···502 makeWrapper,
503 jre,
504}:
505-# pick a repository derivation, here we will use buildMaven
506let
0507 repository = callPackage ./build-maven-repository.nix { };
508in
509-stdenv.mkDerivation rec {
510 pname = "maven-demo";
511 version = "1.0";
512···515 buildInputs = [ maven ];
516517 buildPhase = ''
00518 echo "Using repository ${repository}"
519 mvn --offline -Dmaven.repo.local=${repository} package;
00520 '';
521522 installPhase = ''
00523 mkdir -p $out/bin
524525 # create a symbolic link for the repository directory
526 ln -s ${repository} $out/repository
527528- install -Dm644 target/${pname}-${version}.jar $out/share/java
529 # create a wrapper that will automatically set the classpath
530 # this should be the paths from the dependency derivation
531- makeWrapper ${jre}/bin/java $out/bin/${pname} \
532- --add-flags "-jar $out/share/java/${pname}-${version}.jar"
00533 '';
534-}
535```
536::: {.note}
537Our script produces a dependency on `jre` rather than `jdk` to restrict the runtime closure necessary to run the application.
···2324 src = fetchFromGitHub {
25 owner = "intoolswetrust";
26+ repo = "jd-cli";
27+ tag = "jd-cli-${version}";
28 hash = "sha256-rRttA5H0A0c44loBzbKH7Waoted3IsOgxGCD2VM0U/Q=";
29 };
30···33 nativeBuildInputs = [ makeWrapper ];
3435 installPhase = ''
36+ runHook preInstall
37+38 mkdir -p $out/bin $out/share/jd-cli
39 install -Dm644 jd-cli/target/jd-cli.jar $out/share/jd-cli
4041 makeWrapper ${jre}/bin/java $out/bin/jd-cli \
42 --add-flags "-jar $out/share/jd-cli/jd-cli.jar"
43+44+ runHook postInstall
45 '';
4647 meta = {
···305 buildInputs = [ maven ];
306 src = ./.; # or fetchFromGitHub, cleanSourceWith, etc
307 buildPhase = ''
308+ runHook preBuild
309+310 mvn package -Dmaven.repo.local=$out
311+312+ runHook postBuild
313 '';
314315 # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
316 installPhase = ''
317+ runHook preInstall
318+319 find $out -type f \
320 -name \*.lastUpdated -or \
321 -name resolver-status.properties -or \
322 -name _remote.repositories \
323 -delete
324+325+ runHook postInstall
326 '';
327328 # don't do any fixup
···366 maven,
367 callPackage,
368}:
0369let
370+ # pick a repository derivation, here we will use buildMaven
371 repository = callPackage ./build-maven-repository.nix { };
372in
373+stdenv.mkDerivation (finalAttrs: {
374 pname = "maven-demo";
375 version = "1.0";
376···378 buildInputs = [ maven ];
379380 buildPhase = ''
381+ runHook preBuild
382+383 echo "Using repository ${repository}"
384 mvn --offline -Dmaven.repo.local=${repository} package;
385+386+ runHook postBuild
387 '';
388389 installPhase = ''
390+ runHook preInstall
391+392+ install -Dm644 target/${finalAttrs.pname}-${finalAttrs.version}.jar $out/share/java
393+394+ runHook postInstall
395 '';
396+})
397```
398399::: {.tip}
···441let
442 repository = callPackage ./build-maven-repository.nix { };
443in
444+stdenv.mkDerivation (finalAttrs: {
445 pname = "maven-demo";
446 version = "1.0";
447···450 buildInputs = [ maven ];
451452 buildPhase = ''
453+ runHook preBuild
454+455 echo "Using repository ${repository}"
456 mvn --offline -Dmaven.repo.local=${repository} package;
457+458+ runHook postBuild
459 '';
460461 installPhase = ''
462+ runHook preInstall
463+464 mkdir -p $out/bin
465466 classpath=$(find ${repository} -name "*.jar" -printf ':%h/%f');
467+ install -Dm644 target/maven-demo-${finalAttrs.version}.jar $out/share/java
468 # create a wrapper that will automatically set the classpath
469 # this should be the paths from the dependency derivation
470+ makeWrapper ${jre}/bin/java $out/bin/maven-demo \
471+ --add-flags "-classpath $out/share/java/maven-demo-${finalAttrs.version}.jar:''${classpath#:}" \
472 --add-flags "Main"
473+474+ runHook postInstall
475 '';
476+})
477```
478479#### MANIFEST file via Maven Plugin {#manifest-file-via-maven-plugin}
···530 makeWrapper,
531 jre,
532}:
0533let
534+ # pick a repository derivation, here we will use buildMaven
535 repository = callPackage ./build-maven-repository.nix { };
536in
537+stdenv.mkDerivation (finalAttrs: {
538 pname = "maven-demo";
539 version = "1.0";
540···543 buildInputs = [ maven ];
544545 buildPhase = ''
546+ runHook preBuild
547+548 echo "Using repository ${repository}"
549 mvn --offline -Dmaven.repo.local=${repository} package;
550+551+ runHook postBuild
552 '';
553554 installPhase = ''
555+ runHook preInstall
556+557 mkdir -p $out/bin
558559 # create a symbolic link for the repository directory
560 ln -s ${repository} $out/repository
561562+ install -Dm644 target/maven-demo-${finalAttrs.version}.jar $out/share/java
563 # create a wrapper that will automatically set the classpath
564 # this should be the paths from the dependency derivation
565+ makeWrapper ${jre}/bin/java $out/bin/maven-demo \
566+ --add-flags "-jar $out/share/java/maven-demo-${finalAttrs.version}.jar"
567+568+ runHook postInstall
569 '';
570+})
571```
572::: {.note}
573Our script produces a dependency on `jre` rather than `jdk` to restrict the runtime closure necessary to run the application.
···21352136#### Common issues {#common-issues}
21372138-* Tests that attempt to access `$HOME` can be fixed by using the following
2139- work-around before running tests (e.g. `preCheck`): `export HOME=$(mktemp -d)`
02140* Compiling with Cython causes tests to fail with a `ModuleNotLoadedError`.
2141 This can be fixed with two changes in the derivation: 1) replacing `pytest` with
2142 `pytestCheckHook` and 2) adding a `preCheck` containing `cd $out` to run
···21352136#### Common issues {#common-issues}
21372138+* Tests that attempt to access `$HOME` can be fixed by using `writableTmpDirAsHomeHook` in
2139+ `nativeCheckInputs`, which sets up a writable temporary directory as the home directory. Alternatively,
2140+ you can achieve the same effect manually (e.g. in `preCheck`) with: `export HOME=$(mktemp -d)`.
2141* Compiling with Cython causes tests to fail with a `ModuleNotLoadedError`.
2142 This can be fixed with two changes in the derivation: 1) replacing `pytest` with
2143 `pytestCheckHook` and 2) adding a `preCheck` containing `cd $out` to run
···9192A list of the maintainers of this Nix expression. Maintainers are defined in [`nixpkgs/maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix). There is no restriction to becoming a maintainer, just add yourself to that list in a separate commit titled “maintainers: add alice” in the same pull request, and reference maintainers with `maintainers = with lib.maintainers; [ alice bob ]`.
93000094### `mainProgram` {#var-meta-mainProgram}
9596The name of the main binary for the package. This affects the binary `nix run` executes. Example: `"rg"`
···9192A list of the maintainers of this Nix expression. Maintainers are defined in [`nixpkgs/maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix). There is no restriction to becoming a maintainer, just add yourself to that list in a separate commit titled “maintainers: add alice” in the same pull request, and reference maintainers with `maintainers = with lib.maintainers; [ alice bob ]`.
9394+### `teams` {#var-meta-teams}
95+96+A list of the teams of this Nix expression. Teams are defined in [`nixpkgs/maintainers/team-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/team-list.nix), and can be defined in a package with `meta.teams = with lib.teams; [ team1 team2 ]`.
97+98### `mainProgram` {#var-meta-mainProgram}
99100The name of the main binary for the package. This affects the binary `nix run` executes. Example: `"rg"`
+19-7
doc/stdenv/stdenv.chapter.md
···20**Since [RFC 0035](https://github.com/NixOS/rfcs/pull/35), this is preferred for packages in Nixpkgs**, as it allows us to reuse the version easily:
2122```nix
23-stdenv.mkDerivation rec {
24 pname = "libfoo";
25 version = "1.2.3";
26 src = fetchurl {
27- url = "http://example.org/libfoo-source-${version}.tar.bz2";
28 hash = "sha256-tWxU/LANbQE32my+9AXyt3nCT7NBVfJ45CX757EMT3Q=";
29 };
30-}
31```
3233Many packages have dependencies that are not provided in the standard environment. It’s usually sufficient to specify those dependencies in the `buildInputs` attribute:
···53stdenv.mkDerivation {
54 pname = "fnord";
55 version = "4.5";
056 # ...
057 buildPhase = ''
0058 gcc foo.c -o foo
0059 '';
060 installPhase = ''
0061 mkdir -p $out/bin
62 cp foo $out/bin
0063 '';
64}
65```
···212213Consider for example this simplified derivation for `solo5`, a sandboxing tool:
214```nix
215-stdenv.mkDerivation rec {
216 pname = "solo5";
217 version = "0.7.5";
218219 src = fetchurl {
220- url = "https://github.com/Solo5/solo5/releases/download/v${version}/solo5-v${version}.tar.gz";
221 hash = "sha256-viwrS9lnaU8sTGuzK/+L/PlMM/xRRtgVuK5pixVeDEw=";
222 };
223···225 makeWrapper
226 pkg-config
227 ];
0228 buildInputs = [ libseccomp ];
229230 postInstall = ''
···249 util-linux
250 qemu
251 ];
252- checkPhase = ''[elided] '';
253-}
254```
255256- `makeWrapper` is a setup hook, i.e., a shell script sourced by the generic builder of `stdenv`.
···20**Since [RFC 0035](https://github.com/NixOS/rfcs/pull/35), this is preferred for packages in Nixpkgs**, as it allows us to reuse the version easily:
2122```nix
23+stdenv.mkDerivation (finalAttrs: {
24 pname = "libfoo";
25 version = "1.2.3";
26 src = fetchurl {
27+ url = "http://example.org/libfoo-source-${finalAttrs.version}.tar.bz2";
28 hash = "sha256-tWxU/LANbQE32my+9AXyt3nCT7NBVfJ45CX757EMT3Q=";
29 };
30+})
31```
3233Many packages have dependencies that are not provided in the standard environment. It’s usually sufficient to specify those dependencies in the `buildInputs` attribute:
···53stdenv.mkDerivation {
54 pname = "fnord";
55 version = "4.5";
56+57 # ...
58+59 buildPhase = ''
60+ runHook preBuild
61+62 gcc foo.c -o foo
63+64+ runHook postBuild
65 '';
66+67 installPhase = ''
68+ runHook preInstall
69+70 mkdir -p $out/bin
71 cp foo $out/bin
72+73+ runHook postInstall
74 '';
75}
76```
···223224Consider for example this simplified derivation for `solo5`, a sandboxing tool:
225```nix
226+stdenv.mkDerivation (finalAttrs: {
227 pname = "solo5";
228 version = "0.7.5";
229230 src = fetchurl {
231+ url = "https://github.com/Solo5/solo5/releases/download/v${finalAttrs.version}/solo5-v${finalAttrs.version}.tar.gz";
232 hash = "sha256-viwrS9lnaU8sTGuzK/+L/PlMM/xRRtgVuK5pixVeDEw=";
233 };
234···236 makeWrapper
237 pkg-config
238 ];
239+240 buildInputs = [ libseccomp ];
241242 postInstall = ''
···261 util-linux
262 qemu
263 ];
264+ checkPhase = ''[elided]'';
265+})
266```
267268- `makeWrapper` is a setup hook, i.e., a shell script sourced by the generic builder of `stdenv`.
···5758[`maintainer-list.nix`]: ../maintainer-list.nix
5960+### `get-maintainer-pings-between.sh`
61+62+Gets which maintainers would be pinged between two Nixpkgs revisions.
63+Outputs a JSON object on stdout mapping GitHub usernames to the attributes
64+that they would be getting pinged for.
65+66+Example:
67+68+```sh
69+maintainers/scripts/get-maintainer-pings-between.sh HEAD^ HEAD
70+```
7172## Conventions
73
···36 - `services.mattermost.listenAddress` has been split into {option}`services.mattermost.host` and {option}`services.mattermost.port`. If your `listenAddress` contained a port, you will need to edit your configuration.
37 - Mattermost now supports peer authentication on both MySQL and Postgres database backends. Updating {option}`system.stateVersion` to 25.05 or later will result in peer authentication being used by default if the Mattermost server would otherwise be connecting to localhost. This is the recommended configuration.
38 - The Mattermost module will produce eval warnings if a database password would end up in the Nix store, and recommend alternatives such as peer authentication or using the environment file.
39- - Mattermost's entire test suite is now enabled by default, which will extend build time from sources by up to an hour. A `withoutTests` passthru has been added in case you want to skip it.
40 - We now support `mmctl` for Mattermost administration if both {option}`services.mattermost.socket.enable` and {option}`services.mattermost.socket.export` are set, which export the Mattermost control socket path into the system environment.
41 - A new `pkgs.mattermost.buildPlugin` function has been added, which allows plugins to be built from source, including webapp frontends with a supported package-lock.json. See the Mattermost NixOS test and [manual](https://nixos.org/manual/nixpkgs/unstable/#sec-mattermost-plugins-build) for an example.
42 - Note that the Mattermost module will create an account _without_ a well-known UID if the username differs from the default (`mattermost`). If you used Mattermost with a nonstandard username, you may want to review the module changes before upgrading.
···58- [scanservjs](https://github.com/sbs20/scanservjs/), a web UI for SANE scanners. Available at [services.scanservjs](#opt-services.scanservjs.enable).
5960- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
00006162- [Homer](https://homer-demo.netlify.app/), a very simple static homepage for your server. Available as [services.homer](options.html#opt-services.homer).
63···526- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
527528- [`services.mongodb.enableAuth`](#opt-services.mongodb.enableAuth) now uses the newer [mongosh](https://github.com/mongodb-js/mongosh) shell instead of the legacy shell to configure the initial superuser. You can configure the mongosh package to use through the [`services.mongodb.mongoshPackage`](#opt-services.mongodb.mongoshPackage) option.
00529530- The paperless module now has an option for regular automatic export of
531 documents data using the integrated document exporter.
···36 - `services.mattermost.listenAddress` has been split into {option}`services.mattermost.host` and {option}`services.mattermost.port`. If your `listenAddress` contained a port, you will need to edit your configuration.
37 - Mattermost now supports peer authentication on both MySQL and Postgres database backends. Updating {option}`system.stateVersion` to 25.05 or later will result in peer authentication being used by default if the Mattermost server would otherwise be connecting to localhost. This is the recommended configuration.
38 - The Mattermost module will produce eval warnings if a database password would end up in the Nix store, and recommend alternatives such as peer authentication or using the environment file.
039 - We now support `mmctl` for Mattermost administration if both {option}`services.mattermost.socket.enable` and {option}`services.mattermost.socket.export` are set, which export the Mattermost control socket path into the system environment.
40 - A new `pkgs.mattermost.buildPlugin` function has been added, which allows plugins to be built from source, including webapp frontends with a supported package-lock.json. See the Mattermost NixOS test and [manual](https://nixos.org/manual/nixpkgs/unstable/#sec-mattermost-plugins-build) for an example.
41 - Note that the Mattermost module will create an account _without_ a well-known UID if the username differs from the default (`mattermost`). If you used Mattermost with a nonstandard username, you may want to review the module changes before upgrading.
···57- [scanservjs](https://github.com/sbs20/scanservjs/), a web UI for SANE scanners. Available at [services.scanservjs](#opt-services.scanservjs.enable).
5859- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
60+61+- [Kismet](https://www.kismetwireless.net/), a Wi-Fi, Bluetooth, and RF monitoring application supporting a wide range of hardware. Available as {option}`services.kismet`.
62+63+- [vwifi](https://github.com/Raizo62/vwifi), a Wi-Fi simulator daemon leveraging the `mac80211_hwsim` and `vhost_vsock` kernel modules for efficient simulation of multi-node Wi-Fi networks. Available as {option}`services.vwifi`.
6465- [Homer](https://homer-demo.netlify.app/), a very simple static homepage for your server. Available as [services.homer](options.html#opt-services.homer).
66···529- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
530531- [`services.mongodb.enableAuth`](#opt-services.mongodb.enableAuth) now uses the newer [mongosh](https://github.com/mongodb-js/mongosh) shell instead of the legacy shell to configure the initial superuser. You can configure the mongosh package to use through the [`services.mongodb.mongoshPackage`](#opt-services.mongodb.mongoshPackage) option.
532+533+- There is a new set of NixOS test tools for testing virtual Wi-Fi networks in many different topologies. See the {option}`services.vwifi` module, {option}`services.kismet` NixOS test, and [manual](https://nixos.org/manual/nixpkgs/unstable/#sec-nixos-test-wifi) for documentation and examples.
534535- The paperless module now has an option for regular automatic export of
536 documents data using the integrated document exporter.
···1+{
2+ config,
3+ lib,
4+ pkgs,
5+ ...
6+}:
7+8+let
9+ inherit (lib.modules) mkIf mkMerge;
10+ inherit (lib.options) mkOption mkPackageOption mkEnableOption;
11+ inherit (lib.lists) optional optionals;
12+ inherit (lib.strings)
13+ hasSuffix
14+ escapeShellArgs
15+ ;
16+ inherit (lib) types;
17+ cfg = config.services.vwifi;
18+in
19+{
20+ options = {
21+ services.vwifi =
22+ let
23+ mkOptionalPort =
24+ name:
25+ mkOption {
26+ description = ''
27+ The ${name} port. Set to null if we should leave it unset.
28+ '';
29+ type = with types; nullOr port;
30+ default = null;
31+ };
32+ in
33+ {
34+ package = mkPackageOption pkgs "vwifi" { };
35+ module = {
36+ enable = mkEnableOption "mac80211_hwsim module";
37+ numRadios = mkOption {
38+ description = "The number of virtual radio interfaces to create.";
39+ type = types.int;
40+ default = 1;
41+ };
42+ macPrefix = mkOption {
43+ description = ''
44+ The prefix for MAC addresses to use, without the trailing ':'.
45+ If one radio is created, you can specify the whole MAC address here.
46+ The default is defined in vwifi/src/config.h.
47+ '';
48+ type = types.strMatching "^(([0-9A-Fa-f]{2}:){0,5}[0-9A-Fa-f]{2})$";
49+ default = "74:F8:F6";
50+ };
51+ };
52+ client = {
53+ enable = mkEnableOption "vwifi client";
54+ spy = mkEnableOption "spy mode, useful for wireless monitors";
55+ serverAddress = mkOption {
56+ description = ''
57+ The address of the server. If set to null, will try to use the vsock protocol.
58+ Note that this assumes that the server is spawned on the host and passed through to
59+ QEMU, with something like:
60+61+ -device vhost-vsock-pci,id=vwifi0,guest-cid=42
62+ '';
63+ type = with types; nullOr str;
64+ default = null;
65+ };
66+ serverPort = mkOptionalPort "server port";
67+ extraArgs = mkOption {
68+ description = ''
69+ Extra arguments to pass to vwifi-client. You can use this if you want to bring
70+ the radios up using vwifi-client instead of at boot.
71+ '';
72+ type = with types; listOf str;
73+ default = [ ];
74+ example = [
75+ "--number"
76+ "3"
77+ ];
78+ };
79+ };
80+ server = {
81+ enable = mkEnableOption "vwifi server";
82+ vsock.enable = mkEnableOption "vsock kernel module";
83+ ports = {
84+ vhost = mkOptionalPort "vhost";
85+ tcp = mkOptionalPort "TCP server";
86+ spy = mkOptionalPort "spy interface";
87+ control = mkOptionalPort "control interface";
88+ };
89+ openFirewall = mkEnableOption "opening the firewall for the TCP and spy ports";
90+ extraArgs = mkOption {
91+ description = ''
92+ Extra arguments to pass to vwifi-server. You can use this for things including
93+ changing the ports or inducing packet loss.
94+ '';
95+ type = with types; listOf str;
96+ default = [ ];
97+ example = [ "--lost-packets" ];
98+ };
99+ };
100+ };
101+ };
102+103+ config = mkMerge [
104+ (mkIf cfg.module.enable {
105+ boot.kernelModules = [
106+ "mac80211_hwsim"
107+ ];
108+ boot.extraModprobeConfig = ''
109+ # We'll add more radios using vwifi-add-interfaces in the systemd unit.
110+ options mac80211_hwsim radios=0
111+ '';
112+ systemd.services.vwifi-add-interfaces = mkIf (cfg.module.numRadios > 0) {
113+ description = "vwifi interface bringup";
114+ wantedBy = [ "network-pre.target" ];
115+ serviceConfig = {
116+ Type = "oneshot";
117+ ExecStart =
118+ let
119+ args = [
120+ (toString cfg.module.numRadios)
121+ cfg.module.macPrefix
122+ ];
123+ in
124+ "${cfg.package}/bin/vwifi-add-interfaces ${escapeShellArgs args}";
125+ };
126+ };
127+ assertions = [
128+ {
129+ assertion = !(hasSuffix ":" cfg.module.macPrefix);
130+ message = ''
131+ services.vwifi.module.macPrefix should not have a trailing ":".
132+ '';
133+ }
134+ ];
135+ })
136+ (mkIf cfg.client.enable {
137+ systemd.services.vwifi-client =
138+ let
139+ clientArgs =
140+ optional cfg.client.spy "--spy"
141+ ++ optional (cfg.client.serverAddress != null) cfg.client.serverAddress
142+ ++ optionals (cfg.client.serverPort != null) [
143+ "--port"
144+ cfg.client.serverPort
145+ ]
146+ ++ cfg.client.extraArgs;
147+ in
148+ rec {
149+ description = "vwifi client";
150+ wantedBy = [ "multi-user.target" ];
151+ after = [ "network.target" ];
152+ requires = after;
153+ serviceConfig = {
154+ ExecStart = "${cfg.package}/bin/vwifi-client ${escapeShellArgs clientArgs}";
155+ };
156+ };
157+ })
158+ (mkIf cfg.server.enable {
159+ boot.kernelModules = mkIf cfg.server.vsock.enable [
160+ "vhost_vsock"
161+ ];
162+ networking.firewall.allowedTCPPorts = mkIf cfg.server.openFirewall (
163+ optional (cfg.server.ports.tcp != null) cfg.server.ports.tcp
164+ ++ optional (cfg.server.ports.spy != null) cfg.server.ports.spy
165+ );
166+ systemd.services.vwifi-server =
167+ let
168+ serverArgs =
169+ optionals (cfg.server.ports.vhost != null) [
170+ "--port-vhost"
171+ (toString cfg.server.ports.vhost)
172+ ]
173+ ++ optionals (cfg.server.ports.tcp != null) [
174+ "--port-tcp"
175+ (toString cfg.server.ports.tcp)
176+ ]
177+ ++ optionals (cfg.server.ports.spy != null) [
178+ "--port-spy"
179+ (toString cfg.server.ports.spy)
180+ ]
181+ ++ optionals (cfg.server.ports.control != null) [
182+ "--port-ctrl"
183+ (toString cfg.server.ports.control)
184+ ]
185+ ++ cfg.server.extraArgs;
186+ in
187+ rec {
188+ description = "vwifi server";
189+ wantedBy = [ "multi-user.target" ];
190+ after = [ "network.target" ];
191+ requires = after;
192+ serviceConfig = {
193+ ExecStart = "${cfg.package}/bin/vwifi-server ${escapeShellArgs serverArgs}";
194+ };
195+ };
196+ })
197+ ];
198+199+ meta.maintainers = with lib.maintainers; [ numinit ];
200+}
+21-11
nixos/modules/services/web-apps/mattermost.nix
···41 # The directory to store mutable data within dataDir.
42 mutableDataDir = "${cfg.dataDir}/data";
4344- # The plugin directory. Note that this is the *post-unpack* plugin directory,
45- # since Mattermost unpacks plugins to put them there. (Hence, mutable data.)
46- pluginDir = "${mutableDataDir}/plugins";
0000004748 # Mattermost uses this as a staging directory to unpack plugins, among possibly other things.
49 # Ensure that it's inside mutableDataDir since it can get rather large.
···232 services.mattermost.environmentFile = "<your environment file>";
233 services.mattermost.database.fromEnvironment = true;
234 '' database;
235- FileSettings.Directory = cfg.dataDir;
236- PluginSettings.Directory = "${pluginDir}/server";
237- PluginSettings.ClientDirectory = "${pluginDir}/client";
000238 LogSettings = {
239 FileLocation = cfg.logDir;
240···800 "R- ${tempDir} - - - - -"
801 "d= ${tempDir} 0750 ${cfg.user} ${cfg.group} - -"
802803- # Ensure that pluginDir is a directory, as it could be a symlink on prior versions.
804 # Don't remove or clean it out since it should be persistent, as this is where plugins are unpacked.
805- "d= ${pluginDir} 0750 ${cfg.user} ${cfg.group} - -"
806807 # Ensure that the plugin directories exist.
808 "d= ${mattermostConf.PluginSettings.Directory} 0750 ${cfg.user} ${cfg.group} - -"
···819 if cfg.pluginsBundle == null then
820 # Create the plugin tarball directory to allow plugin uploads.
821 [
822- "d= ${cfg.dataDir}/plugins 0750 ${cfg.user} ${cfg.group} - -"
823 ]
824 else
825 # Symlink the plugin tarball directory, removing anything existing, since it's managed by Nix.
826- [ "L+ ${cfg.dataDir}/plugins - - - - ${cfg.pluginsBundle}" ]
827 );
828829 systemd.services.mattermost = rec {
···867 # Logs too.
868 oldLogs="$dataDir/logs"
869 newLogs="$logDir"
870- if [ "$oldLogs" != "$newLogs" ] && [ -d "$oldLogs" ]; then
871 # Migrate the legacy log location to the new log location.
872 # Allow this to fail if there aren't any logs to move.
873 echo "Moving legacy logs at $oldLogs to $newLogs" >&2
874 mkdir -p "$newLogs"
875 mv "$oldLogs"/* "$newLogs" || true
0876 fi
877 ''
878 + optionalString (!cfg.mutableConfig) ''
···41 # The directory to store mutable data within dataDir.
42 mutableDataDir = "${cfg.dataDir}/data";
4344+ # The plugin directory. Note that this is the *pre-unpack* plugin directory,
45+ # since Mattermost looks in mutableDataDir for a directory called "plugins".
46+ # If Mattermost is installed with plugins defined in a Nix configuration, the plugins
47+ # are symlinked here. Otherwise, this is a real directory and the tarballs are uploaded here.
48+ pluginTarballDir = "${mutableDataDir}/plugins";
49+50+ # We need a different unpack directory for Mattermost to sync things to at launch,
51+ # since the above may be a symlink to the store.
52+ pluginUnpackDir = "${mutableDataDir}/.plugins";
5354 # Mattermost uses this as a staging directory to unpack plugins, among possibly other things.
55 # Ensure that it's inside mutableDataDir since it can get rather large.
···238 services.mattermost.environmentFile = "<your environment file>";
239 services.mattermost.database.fromEnvironment = true;
240 '' database;
241+242+ # Note that the plugin tarball directory is not configurable, and is expected to be in FileSettings.Directory/plugins.
243+ FileSettings.Directory = mutableDataDir;
244+ PluginSettings.Directory = "${pluginUnpackDir}/server";
245+ PluginSettings.ClientDirectory = "${pluginUnpackDir}/client";
246+247 LogSettings = {
248 FileLocation = cfg.logDir;
249···809 "R- ${tempDir} - - - - -"
810 "d= ${tempDir} 0750 ${cfg.user} ${cfg.group} - -"
811812+ # Ensure that pluginUnpackDir is a directory.
813 # Don't remove or clean it out since it should be persistent, as this is where plugins are unpacked.
814+ "d= ${pluginUnpackDir} 0750 ${cfg.user} ${cfg.group} - -"
815816 # Ensure that the plugin directories exist.
817 "d= ${mattermostConf.PluginSettings.Directory} 0750 ${cfg.user} ${cfg.group} - -"
···828 if cfg.pluginsBundle == null then
829 # Create the plugin tarball directory to allow plugin uploads.
830 [
831+ "d= ${pluginTarballDir} 0750 ${cfg.user} ${cfg.group} - -"
832 ]
833 else
834 # Symlink the plugin tarball directory, removing anything existing, since it's managed by Nix.
835+ [ "L+ ${pluginTarballDir} - - - - ${cfg.pluginsBundle}" ]
836 );
837838 systemd.services.mattermost = rec {
···876 # Logs too.
877 oldLogs="$dataDir/logs"
878 newLogs="$logDir"
879+ if [ "$oldLogs" != "$newLogs" ] && [ -d "$oldLogs" ] && [ ! -f "$newLogs/.initial-created" ]; then
880 # Migrate the legacy log location to the new log location.
881 # Allow this to fail if there aren't any logs to move.
882 echo "Moving legacy logs at $oldLogs to $newLogs" >&2
883 mkdir -p "$newLogs"
884 mv "$oldLogs"/* "$newLogs" || true
885+ touch "$newLogs/.initial-created"
886 fi
887 ''
888 + optionalString (!cfg.mutableConfig) ''
···335 if [ "$actualPostAttachmentHash" != "$postAttachmentHash" ]; then
336 echo "Post attachment hash mismatched!" >&2
337 exit 1
338- else
00000000000339 echo "Post attachment hash was OK!" >&2
340 exit 0
000341 fi
342 else
343 echo "Post didn't exist when it should have!" >&2
···454 # Switch to the newer config and make sure the plugins directory is replaced with a directory,
455 # since it could have been a symlink on previous versions.
456 mostlyMutable.systemctl("stop mattermost.service")
457- mostlyMutable.succeed(f"[ ! -L /var/lib/mattermost/data/plugins ] && rm -rf /var/lib/mattermost/data/plugins && ln -s {mostlyMutablePlugins} /var/lib/mattermost/data/plugins || true")
458 mostlyMutable.succeed('[ -L /var/lib/mattermost/data/plugins ] && [ -d /var/lib/mattermost/data/plugins ]')
459 switch_to_specialisation(mostlyMutable, mostlyMutableToplevel, "upgrade")
460 wait_mattermost_up(mostlyMutable)
461- mostlyMutable.succeed('[ ! -L /var/lib/mattermost/data/plugins ] && [ -d /var/lib/mattermost/data/plugins ]')
462463 # HelpLink should be changed, still, and the post should still exist
464 expect_config(mostlyMutable, esr, '.AboutLink == "https://nixos.org" and .HelpLink == "https://nixos.org/nixos/manual"')
···335 if [ "$actualPostAttachmentHash" != "$postAttachmentHash" ]; then
336 echo "Post attachment hash mismatched!" >&2
337 exit 1
338+ fi
339+340+ # Make sure it's on the filesystem in the expected place
341+ fsPath="$(find /var/lib/mattermost/data -name "$(basename -- "$postAttachment")" -print -quit)"
342+ if [ -z "$fsPath" ] || [ ! -f "$fsPath" ]; then
343+ echo "Attachment didn't exist on the filesystem!" >&2
344+ exit 1
345+ fi
346+347+ # And that the hash matches.
348+ actualFsAttachmentHash="$(sha256sum "$fsPath" | awk '{print $1}')"
349+ if [ "$actualFsAttachmentHash" == "$postAttachmentHash" ]; then
350 echo "Post attachment hash was OK!" >&2
351 exit 0
352+ else
353+ echo "Attachment hash mismatched on disk!" >&2
354+ exit 1
355 fi
356 else
357 echo "Post didn't exist when it should have!" >&2
···468 # Switch to the newer config and make sure the plugins directory is replaced with a directory,
469 # since it could have been a symlink on previous versions.
470 mostlyMutable.systemctl("stop mattermost.service")
0471 mostlyMutable.succeed('[ -L /var/lib/mattermost/data/plugins ] && [ -d /var/lib/mattermost/data/plugins ]')
472 switch_to_specialisation(mostlyMutable, mostlyMutableToplevel, "upgrade")
473 wait_mattermost_up(mostlyMutable)
0474475 # HelpLink should be changed, still, and the post should still exist
476 expect_config(mostlyMutable, esr, '.AboutLink == "https://nixos.org" and .HelpLink == "https://nixos.org/nixos/manual"')
···2526stdenv.mkDerivation (finalAttrs: {
27 pname = "nextcloud-talk-desktop";
28- version = "1.1.5";
2930 # Building from source would require building also building Server and Talk components
31 # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites
32 src = fetchzip {
33 url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${finalAttrs.version}/Nextcloud.Talk-linux-x64.zip";
34- hash = "sha256-KI6EJxsiIPjk+SBdqAwQNpaMZgVQSra/tqCGufQYSPs=";
35 stripRoot = false;
36 };
37
···2526stdenv.mkDerivation (finalAttrs: {
27 pname = "nextcloud-talk-desktop";
28+ version = "1.1.6";
2930 # Building from source would require building also building Server and Talk components
31 # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites
32 src = fetchzip {
33 url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${finalAttrs.version}/Nextcloud.Talk-linux-x64.zip";
34+ hash = "sha256-+bKE9taQxOrxB9tBP3PReyZlict6/gEX5uWbuzGIa8k=";
35 stripRoot = false;
36 };
37
···56 # substitute the markers set by the mark-paths patch
57 substituteInPlace fpcsrc/compiler/systems/t_linux.pas --subst-var-by dynlinker-prefix "${glibc}"
58 substituteInPlace fpcsrc/compiler/systems/t_linux.pas --subst-var-by syslibpath "${glibc}/lib"
000059 # Replace the `codesign --remove-signature` command with a custom script, since `codesign` is not available
60 # in nixpkgs
61 # Remove the -no_uuid strip flag which does not work on llvm-strip, only
···56 # substitute the markers set by the mark-paths patch
57 substituteInPlace fpcsrc/compiler/systems/t_linux.pas --subst-var-by dynlinker-prefix "${glibc}"
58 substituteInPlace fpcsrc/compiler/systems/t_linux.pas --subst-var-by syslibpath "${glibc}/lib"
59+60+ substituteInPlace fpcsrc/compiler/systems/t_darwin.pas \
61+ --replace-fail "LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib',true)" "LibrarySearchPath.AddLibraryPath(sysrootpath,'$SDKROOT/usr/lib',true)"
62+63 # Replace the `codesign --remove-signature` command with a custom script, since `codesign` is not available
64 # in nixpkgs
65 # Remove the -no_uuid strip flag which does not work on llvm-strip, only
···77 '';
7879 meta = {
080 description = "Provides the necessary functionality for other ProtonVPN components to interact with NetworkManager";
81 homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager";
82 license = lib.licenses.gpl3Only;
···77 '';
7879 meta = {
80+ broken = true; # ModuleNotFoundError: No module named 'proton.vpn.local_agent'
81 description = "Provides the necessary functionality for other ProtonVPN components to interact with NetworkManager";
82 homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager";
83 license = lib.licenses.gpl3Only;
···240 ]
241 },
242 "notes": {
243- "hash": "sha256-dpMCehjhPQoOA+MVdLeGc370hmqWzmsMczgV08m/cO4=",
244- "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.11.0/notes-v4.11.0.tar.gz",
245- "version": "4.11.0",
246- "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.",
247 "homepage": "https://github.com/nextcloud/notes",
248 "licenses": [
249 "agpl"
···340 ]
341 },
342 "sociallogin": {
343- "hash": "sha256-M2sITpieWvl2WPjxWHtyyZRNQPagYLahVaJcDoiTsh8=",
344- "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.9.2/release.tar.gz",
345- "version": "5.9.2",
346 "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.",
347 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
348 "licenses": [
···240 ]
241 },
242 "notes": {
243+ "hash": "sha256-UdqK6DiC67YPcy84wFEZaT8AQLDhhNndLiEesQeBY7M=",
244+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.12.0/notes-v4.12.0.tar.gz",
245+ "version": "4.12.0",
246+ "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 apps ([Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios), as well as [3rd-party apps](https://github.com/nextcloud/notes/wiki#3rd-party-clients) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
247 "homepage": "https://github.com/nextcloud/notes",
248 "licenses": [
249 "agpl"
···340 ]
341 },
342 "sociallogin": {
343+ "hash": "sha256-DNf48YmVJ49v+lynTCIBTZhPi/S1mjyIF5OWf+UVKeY=",
344+ "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v6.0.1/release.tar.gz",
345+ "version": "6.0.1",
346 "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.",
347 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
348 "licenses": [
+13-13
pkgs/servers/nextcloud/packages/30.json
···40 ]
41 },
42 "contacts": {
43- "hash": "sha256-suiKZfa+nL9xMFkkZwlrrGiicoIf5zyxpNXS3q7nCC8=",
44- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v7.0.5/contacts-v7.0.5.tar.gz",
45- "version": "7.0.5",
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": [
···190 ]
191 },
192 "mail": {
193- "hash": "sha256-PeDfYIaU1HNONCI/aNwsMv0gBUArATj/dXKUW52ejW8=",
194- "url": "https://github.com/nextcloud-releases/mail/releases/download/v4.3.6/mail-v4.3.6.tar.gz",
195- "version": "4.3.6",
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": [
···240 ]
241 },
242 "notes": {
243- "hash": "sha256-dpMCehjhPQoOA+MVdLeGc370hmqWzmsMczgV08m/cO4=",
244- "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.11.0/notes-v4.11.0.tar.gz",
245- "version": "4.11.0",
246- "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.",
247 "homepage": "https://github.com/nextcloud/notes",
248 "licenses": [
249 "agpl"
···340 ]
341 },
342 "sociallogin": {
343- "hash": "sha256-M2sITpieWvl2WPjxWHtyyZRNQPagYLahVaJcDoiTsh8=",
344- "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.9.2/release.tar.gz",
345- "version": "5.9.2",
346 "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.",
347 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
348 "licenses": [
···40 ]
41 },
42 "contacts": {
43+ "hash": "sha256-3G1di/PnOAIML2vwKglmuMApvn8+nXYjdqnySSSoLDI=",
44+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v7.0.6/contacts-v7.0.6.tar.gz",
45+ "version": "7.0.6",
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": [
···190 ]
191 },
192 "mail": {
193+ "hash": "sha256-AV0vrDU4zeg7AQQpJkj5mHQatxCa2RMON5tY4Q/OjyM=",
194+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.0.0/mail-v5.0.0.tar.gz",
195+ "version": "5.0.0",
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": [
···240 ]
241 },
242 "notes": {
243+ "hash": "sha256-UdqK6DiC67YPcy84wFEZaT8AQLDhhNndLiEesQeBY7M=",
244+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.12.0/notes-v4.12.0.tar.gz",
245+ "version": "4.12.0",
246+ "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 apps ([Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios), as well as [3rd-party apps](https://github.com/nextcloud/notes/wiki#3rd-party-clients) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
247 "homepage": "https://github.com/nextcloud/notes",
248 "licenses": [
249 "agpl"
···340 ]
341 },
342 "sociallogin": {
343+ "hash": "sha256-DNf48YmVJ49v+lynTCIBTZhPi/S1mjyIF5OWf+UVKeY=",
344+ "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v6.0.1/release.tar.gz",
345+ "version": "6.0.1",
346 "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.",
347 "homepage": "https://github.com/zorn-v/nextcloud-social-login",
348 "licenses": [
+13-13
pkgs/servers/nextcloud/packages/31.json
···40 ]
41 },
42 "contacts": {
43- "hash": "sha256-suiKZfa+nL9xMFkkZwlrrGiicoIf5zyxpNXS3q7nCC8=",
44- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v7.0.5/contacts-v7.0.5.tar.gz",
45- "version": "7.0.5",
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": [
···190 ]
191 },
192 "mail": {
193- "hash": "sha256-PeDfYIaU1HNONCI/aNwsMv0gBUArATj/dXKUW52ejW8=",
194- "url": "https://github.com/nextcloud-releases/mail/releases/download/v4.3.6/mail-v4.3.6.tar.gz",
195- "version": "4.3.6",
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": [
···230 ]
231 },
232 "notes": {
233- "hash": "sha256-dpMCehjhPQoOA+MVdLeGc370hmqWzmsMczgV08m/cO4=",
234- "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.11.0/notes-v4.11.0.tar.gz",
235- "version": "4.11.0",
236- "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.",
237 "homepage": "https://github.com/nextcloud/notes",
238 "licenses": [
239 "agpl"
···330 ]
331 },
332 "sociallogin": {
333- "hash": "sha256-M2sITpieWvl2WPjxWHtyyZRNQPagYLahVaJcDoiTsh8=",
334- "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v5.9.2/release.tar.gz",
335- "version": "5.9.2",
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": [
···40 ]
41 },
42 "contacts": {
43+ "hash": "sha256-3G1di/PnOAIML2vwKglmuMApvn8+nXYjdqnySSSoLDI=",
44+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v7.0.6/contacts-v7.0.6.tar.gz",
45+ "version": "7.0.6",
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": [
···190 ]
191 },
192 "mail": {
193+ "hash": "sha256-AV0vrDU4zeg7AQQpJkj5mHQatxCa2RMON5tY4Q/OjyM=",
194+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.0.0/mail-v5.0.0.tar.gz",
195+ "version": "5.0.0",
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": [
···230 ]
231 },
232 "notes": {
233+ "hash": "sha256-UdqK6DiC67YPcy84wFEZaT8AQLDhhNndLiEesQeBY7M=",
234+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.12.0/notes-v4.12.0.tar.gz",
235+ "version": "4.12.0",
236+ "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 apps ([Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios), as well as [3rd-party apps](https://github.com/nextcloud/notes/wiki#3rd-party-clients) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
237 "homepage": "https://github.com/nextcloud/notes",
238 "licenses": [
239 "agpl"
···330 ]
331 },
332 "sociallogin": {
333+ "hash": "sha256-DNf48YmVJ49v+lynTCIBTZhPi/S1mjyIF5OWf+UVKeY=",
334+ "url": "https://github.com/zorn-v/nextcloud-social-login/releases/download/v6.0.1/release.tar.gz",
335+ "version": "6.0.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": [
···694 scikits-samplerate = throw "scikits-samplerate has been removed, it was unsed and unmaintained since 2015"; # added 2024-05-23
695 selectors2 = throw "selectors2 has been removed: archived by upstream."; # added 2024-07-27
696 selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
0697 sequoia = throw "python3Packages.sequoia was replaced by pysequoia - built from a dedicated repository, with a new API."; # added 2023-06-24
698 setuptools_dso = setuptools-dso; # added 2024-03-03
699 setuptools_scm = setuptools-scm; # added 2021-06-03
···694 scikits-samplerate = throw "scikits-samplerate has been removed, it was unsed and unmaintained since 2015"; # added 2024-05-23
695 selectors2 = throw "selectors2 has been removed: archived by upstream."; # added 2024-07-27
696 selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
697+ sentry-sdk_2 = sentry-sdk; # added 2025-04-20
698 sequoia = throw "python3Packages.sequoia was replaced by pysequoia - built from a dedicated repository, with a new API."; # added 2023-06-24
699 setuptools_dso = setuptools-dso; # added 2024-03-03
700 setuptools_scm = setuptools-scm; # added 2021-06-03