···8 # Using pull_request_target instead of pull_request avoids having to approve first time contributors
9 pull_request_target
1011-# The tool doesn't need any permissions, it only outputs success or not based on the checkout
12-permissions: {}
01314jobs:
15 check:
···62 if [[ "$mergeable" == "true" ]]; then
63 echo "The PR can be merged, checking the merge commit $mergedSha"
64 else
65- echo "The PR cannot be merged, it has a merge conflict"
000000066 exit 1
67 fi
68 echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
···8 # Using pull_request_target instead of pull_request avoids having to approve first time contributors
9 pull_request_target
1011+permissions:
12+ # We need this permission to cancel the workflow run if there's a merge conflict
13+ actions: write
1415jobs:
16 check:
···63 if [[ "$mergeable" == "true" ]]; then
64 echo "The PR can be merged, checking the merge commit $mergedSha"
65 else
66+ echo "The PR cannot be merged, it has a merge conflict, cancelling the workflow.."
67+ gh api \
68+ --method POST \
69+ -H "Accept: application/vnd.github+json" \
70+ -H "X-GitHub-Api-Version: 2022-11-28" \
71+ /repos/"$GITHUB_REPOSITORY"/actions/runs/"$GITHUB_RUN_ID"/cancel
72+ sleep 60
73+ # If it's still not canceled after a minute, something probably went wrong, just exit
74 exit 1
75 fi
76 echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
+2
lib/generators.nix
···525 "(${v.expr})"
526 else if v == { } then
527 "{}"
00528 else
529 "{${introSpace}${concatItems (
530 lib.attrsets.mapAttrsToList (key: value: "[${builtins.toJSON key}] = ${toLua innerArgs value}") v
···525 "(${v.expr})"
526 else if v == { } then
527 "{}"
528+ else if libAttr.isDerivation v then
529+ ''"${toString v}"''
530 else
531 "{${introSpace}${concatItems (
532 lib.attrsets.mapAttrsToList (key: value: "[${builtins.toJSON key}] = ${toLua innerArgs value}") v
···67in
68 pkgs.symlinkJoin {
69 name = "nixpkgs-lib-tests";
70+ paths = map testWithNix nixVersions ++
71+72+ #
73+ # TEMPORARY MIGRATION MECHANISM
74+ #
75+ # This comment and the expression which follows it should be
76+ # removed as part of resolving this issue:
77+ #
78+ # https://github.com/NixOS/nixpkgs/issues/272591
79+ #
80+ [(import ../../pkgs/test/release {})]
81+ ;
82+83 }
···36- `mkosi` was updated to v19. Parts of the user interface have changed. Consult the
37 [release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes.
3800000039- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
40 Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.
41···70- [Nginx virtual hosts](#opt-services.nginx.virtualHosts) using `forceSSL` or
71 `globalRedirect` can now have redirect codes other than 301 through
72 `redirectCode`.
007374- Gitea 1.21 upgrade has several breaking changes, including:
75 - Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
···36- `mkosi` was updated to v19. Parts of the user interface have changed. Consult the
37 [release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes.
3839+- The latest available version of Nextcloud is v28 (available as `pkgs.nextcloud28`). The installation logic is as follows:
40+ - If [`services.nextcloud.package`](#opt-services.nextcloud.package) is specified explicitly, this package will be installed (**recommended**)
41+ - If [`system.stateVersion`](#opt-system.stateVersion) is >=24.05, `pkgs.nextcloud28` will be installed by default.
42+ - If [`system.stateVersion`](#opt-system.stateVersion) is >=23.11, `pkgs.nextcloud27` will be installed by default.
43+ - Please note that an upgrade from v26 (or older) to v28 directly is not possible. Please upgrade to `nextcloud27` (or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaring [`services.nextcloud.package = pkgs.nextcloud27;`](options.html#opt-services.nextcloud.package).
44+45- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
46 Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.
47···76- [Nginx virtual hosts](#opt-services.nginx.virtualHosts) using `forceSSL` or
77 `globalRedirect` can now have redirect codes other than 301 through
78 `redirectCode`.
79+80+- [](#opt-boot.kernel.sysctl._net.core.wmem_max_) changed from a string to an integer because of the addition of a custom merge option (taking the highest value defined to avoid conflicts between 2 services trying to set that value), just as [](#opt-boot.kernel.sysctl._net.core.rmem_max_) since 22.11.
8182- Gitea 1.21 upgrade has several breaking changes, including:
83 - Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
···112 echo "OK"
113114 filesToFixup="$(for i in "$out"/*; do
115- grep -l '\B\(/usr\)\?/s\?bin' "$i" || :
0116 done)"
117118 if [ -n "$filesToFixup" ]; then
···112 echo "OK"
113114 filesToFixup="$(for i in "$out"/*; do
115+ # list all files referring to (/usr)/bin paths, but allow references to /bin/sh.
116+ grep -P -l '\B(?!\/bin\/sh\b)(\/usr)?\/bin(?:\/.*)?' "$i" || :
117 done)"
118119 if [ -n "$filesToFixup" ]; then
···1+{ options, config, pkgs, lib, ... }:
23let
4+ inherit (lib) mkOption mdDoc types mkIf;
56+ opt = options.services.quicktun;
7 cfg = config.services.quicktun;
08in
0009{
10 options = {
011 services.quicktun = mkOption {
12 default = { };
13+ description = mdDoc ''
14+ QuickTun tunnels.
15+16+ See <http://wiki.ucis.nl/QuickTun> for more information about available options.
17+ '';
18+ type = types.attrsOf (types.submodule ({ name, ... }: let
19+ qtcfg = cfg.${name};
20+ in {
21 options = {
22 tunMode = mkOption {
23+ type = with types; coercedTo bool (b: if b then 1 else 0) (ints.between 0 1);
24+ default = false;
25+ example = true;
26+ description = mdDoc "Whether to operate in tun (IP) or tap (Ethernet) mode.";
27 };
2829 remoteAddress = mkOption {
30 type = types.str;
31+ default = "0.0.0.0";
32 example = "tunnel.example.com";
33+ description = mdDoc ''
34+ IP address or hostname of the remote end (use `0.0.0.0` for a floating/dynamic remote endpoint).
35+ '';
36 };
3738 localAddress = mkOption {
39+ type = with types; nullOr str;
40+ default = null;
41 example = "0.0.0.0";
42+ description = mdDoc "IP address or hostname of the local end.";
43 };
4445 localPort = mkOption {
46+ type = types.port;
47 default = 2998;
48+ description = mdDoc "Local UDP port.";
49 };
5051 remotePort = mkOption {
52+ type = types.port;
53+ default = qtcfg.localPort;
54+ defaultText = lib.literalExpression "config.services.quicktun.<name>.localPort";
55+ description = mdDoc " remote UDP port";
56 };
5758 remoteFloat = mkOption {
59+ type = with types; coercedTo bool (b: if b then 1 else 0) (ints.between 0 1);
60+ default = false;
61+ example = true;
62+ description = mdDoc ''
63+ Whether to allow the remote address and port to change when properly encrypted packets are received.
64+ '';
65 };
6667 protocol = mkOption {
68+ type = types.enum [ "raw" "nacl0" "nacltai" "salty" ];
69 default = "nacltai";
70+ description = mdDoc "Which protocol to use.";
71 };
7273 privateKey = mkOption {
74+ type = with types; nullOr str;
75+ default = null;
76+ description = mdDoc ''
77+ Local secret key in hexadecimal form.
78+79+ ::: {.warning}
80+ This option is deprecated. Please use {var}`services.quicktun.<name>.privateKeyFile` instead.
81+ :::
82+83+ ::: {.note}
84+ Not needed when {var}`services.quicktun.<name>.protocol` is set to `raw`.
85+ :::
86+ '';
87+ };
88+89+ privateKeyFile = mkOption {
90+ type = with types; nullOr path;
91+ # This is a hack to deprecate `privateKey` without using `mkChangedModuleOption`
92+ default = if qtcfg.privateKey == null then null else pkgs.writeText "quickttun-key-${name}" qtcfg.privateKey;
93+ defaultText = "null";
94+ description = mdDoc ''
95+ Path to file containing local secret key in binary or hexadecimal form.
96+97+ ::: {.note}
98+ Not needed when {var}`services.quicktun.<name>.protocol` is set to `raw`.
99+ :::
100+ '';
101 };
102103 publicKey = mkOption {
104+ type = with types; nullOr str;
105+ default = null;
106+ description = mdDoc ''
107+ Remote public key in hexadecimal form.
108+109+ ::: {.note}
110+ Not needed when {var}`services.quicktun.<name>.protocol` is set to `raw`.
111+ :::
112+ '';
113 };
114115 timeWindow = mkOption {
116+ type = types.ints.unsigned;
117 default = 5;
118+ description = mdDoc ''
119+ Allowed time window for first received packet in seconds (positive number allows packets from history)
120+ '';
121 };
122123 upScript = mkOption {
124+ type = with types; nullOr lines;
125+ default = null;
126+ description = mdDoc ''
127+ Run specified command or script after the tunnel device has been opened.
128+ '';
129 };
130 };
131+ }));
132 };
0133 };
134135+ config = {
136+ warnings = lib.pipe cfg [
137+ (lib.mapAttrsToList (name: value: if value.privateKey != null then name else null))
138+ (builtins.filter (n: n != null))
139+ (map (n: " - services.quicktun.${n}.privateKey"))
140+ (services: lib.optional (services != [ ]) ''
141+ `services.quicktun.<name>.privateKey` is deprecated.
142+ Please use `services.quicktun.<name>.privateKeyFile` instead.
143+144+ Offending options:
145+ ${lib.concatStringsSep "\n" services}
146+ '')
147+ ];
148+149+ systemd.services = lib.mkMerge (
150+ lib.mapAttrsToList (name: qtcfg: {
151 "quicktun-${name}" = {
152 wantedBy = [ "multi-user.target" ];
153 after = [ "network.target" ];
···155 INTERFACE = name;
156 TUN_MODE = toString qtcfg.tunMode;
157 REMOTE_ADDRESS = qtcfg.remoteAddress;
158+ LOCAL_ADDRESS = mkIf (qtcfg.localAddress != null) (qtcfg.localAddress);
159 LOCAL_PORT = toString qtcfg.localPort;
160 REMOTE_PORT = toString qtcfg.remotePort;
161 REMOTE_FLOAT = toString qtcfg.remoteFloat;
162+ PRIVATE_KEY_FILE = mkIf (qtcfg.privateKeyFile != null) qtcfg.privateKeyFile;
163+ PUBLIC_KEY = mkIf (qtcfg.publicKey != null) qtcfg.publicKey;
164 TIME_WINDOW = toString qtcfg.timeWindow;
165+ TUN_UP_SCRIPT = mkIf (qtcfg.upScript != null) (pkgs.writeScript "quicktun-${name}-up.sh" qtcfg.upScript);
166 SUID = "nobody";
167 };
168 serviceConfig = {
···173 }) cfg
174 );
175 };
0176}
+1-1
nixos/modules/services/torrent/transmission.nix
···434 # at least up to the values hardcoded here:
435 (mkIf cfg.settings.utp-enabled {
436 "net.core.rmem_max" = mkDefault 4194304; # 4MB
437- "net.core.wmem_max" = mkDefault "1048576"; # 1MB
438 })
439 (mkIf cfg.performanceNetParameters {
440 # Increase the number of available source (local) TCP and UDP ports to 49151.
···434 # at least up to the values hardcoded here:
435 (mkIf cfg.settings.utp-enabled {
436 "net.core.rmem_max" = mkDefault 4194304; # 4MB
437+ "net.core.wmem_max" = mkDefault 1048576; # 1MB
438 })
439 (mkIf cfg.performanceNetParameters {
440 # Increase the number of available source (local) TCP and UDP ports to 49151.
+1-1
nixos/modules/services/web-apps/nextcloud.md
···5[services.nextcloud](#opt-services.nextcloud.enable). A
6desktop client is packaged at `pkgs.nextcloud-client`.
78-The current default by NixOS is `nextcloud27` which is also the latest
9major version available.
1011## Basic usage {#module-services-nextcloud-basic-usage}
···5[services.nextcloud](#opt-services.nextcloud.enable). A
6desktop client is packaged at `pkgs.nextcloud-client`.
78+The current default by NixOS is `nextcloud28` which is also the latest
9major version available.
1011## Basic usage {#module-services-nextcloud-basic-usage}
+8-8
nixos/modules/services/web-apps/nextcloud.nix
···28 phpPackage = cfg.phpPackage.buildEnv {
29 extensions = { enabled, all }:
30 (with all; enabled
031 ++ optional cfg.enableImagemagick imagick
32 # Optionally enabled depending on caching settings
33 ++ optional cfg.caching.apcu apcu
···190 package = mkOption {
191 type = types.package;
192 description = lib.mdDoc "Which package to use for the Nextcloud instance.";
193- relatedPackages = [ "nextcloud26" "nextcloud27" ];
194 };
195 phpPackage = mkPackageOption pkgs "php" {
196 example = "php82";
···679680 config = mkIf cfg.enable (mkMerge [
681 { warnings = let
682- latest = 27;
683 upgradeWarning = major: nixos:
684 ''
685 A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···700 '')
701 ++ (optional (versionOlder cfg.package.version "25") (upgradeWarning 24 "22.11"))
702 ++ (optional (versionOlder cfg.package.version "26") (upgradeWarning 25 "23.05"))
703- ++ (optional (versionOlder cfg.package.version "27") (upgradeWarning 26 "23.11"));
0704705 services.nextcloud.package = with pkgs;
706 mkDefault (
···710 nextcloud defined in an overlay, please set `services.nextcloud.package` to
711 `pkgs.nextcloud`.
712 ''
713- else if versionOlder stateVersion "22.11" then nextcloud24
714 else if versionOlder stateVersion "23.05" then nextcloud25
715 else if versionOlder stateVersion "23.11" then nextcloud26
716- else nextcloud27
0717 );
718719- services.nextcloud.phpPackage =
720- if versionOlder cfg.package.version "26" then pkgs.php81
721- else pkgs.php82;
722723 services.nextcloud.phpOptions = mkMerge [
724 (mapAttrs (const mkOptionDefault) defaultPHPSettings)
···28 phpPackage = cfg.phpPackage.buildEnv {
29 extensions = { enabled, all }:
30 (with all; enabled
31+ ++ [ bz2 intl sodium ] # recommended
32 ++ optional cfg.enableImagemagick imagick
33 # Optionally enabled depending on caching settings
34 ++ optional cfg.caching.apcu apcu
···191 package = mkOption {
192 type = types.package;
193 description = lib.mdDoc "Which package to use for the Nextcloud instance.";
194+ relatedPackages = [ "nextcloud26" "nextcloud27" "nextcloud28" ];
195 };
196 phpPackage = mkPackageOption pkgs "php" {
197 example = "php82";
···680681 config = mkIf cfg.enable (mkMerge [
682 { warnings = let
683+ latest = 28;
684 upgradeWarning = major: nixos:
685 ''
686 A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
···701 '')
702 ++ (optional (versionOlder cfg.package.version "25") (upgradeWarning 24 "22.11"))
703 ++ (optional (versionOlder cfg.package.version "26") (upgradeWarning 25 "23.05"))
704+ ++ (optional (versionOlder cfg.package.version "27") (upgradeWarning 26 "23.11"))
705+ ++ (optional (versionOlder cfg.package.version "28") (upgradeWarning 27 "24.05"));
706707 services.nextcloud.package = with pkgs;
708 mkDefault (
···712 nextcloud defined in an overlay, please set `services.nextcloud.package` to
713 `pkgs.nextcloud`.
714 ''
0715 else if versionOlder stateVersion "23.05" then nextcloud25
716 else if versionOlder stateVersion "23.11" then nextcloud26
717+ else if versionOlder stateVersion "24.05" then nextcloud27
718+ else nextcloud28
719 );
720721+ services.nextcloud.phpPackage = pkgs.php82;
00722723 services.nextcloud.phpOptions = mkMerge [
724 (mapAttrs (const mkOptionDefault) defaultPHPSettings)
···13 nix.settings.sandbox = false;
14 nix.settings.substituters = []; # don't try to access cache.nixos.org
15016 virtualisation.writableStore = true;
17 # Make sure we always have all the required dependencies for creating a
18 # container available within the VM, because we don't have network access.
···13 nix.settings.sandbox = false;
14 nix.settings.substituters = []; # don't try to access cache.nixos.org
1516+ virtualisation.memorySize = 2048;
17 virtualisation.writableStore = true;
18 # Make sure we always have all the required dependencies for creating a
19 # container available within the VM, because we don't have network access.
···78buildGoModule rec {
9 pname = "kubo";
10- version = "0.24.0"; # When updating, also check if the repo version changed and adjust repoVersion below
11 rev = "v${version}";
1213 passthru.repoVersion = "15"; # Also update kubo-migrator when changing the repo version
···15 # Kubo makes changes to its source tarball that don't match the git source.
16 src = fetchurl {
17 url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz";
18- hash = "sha256-stSjLvg8G1EiXon3Qby4wLgbhX7Aaj9pnxcvE32/42k=";
19 };
2021 # tarball contains multiple files/directories
···78buildGoModule rec {
9 pname = "kubo";
10+ version = "0.25.0"; # When updating, also check if the repo version changed and adjust repoVersion below
11 rev = "v${version}";
1213 passthru.repoVersion = "15"; # Also update kubo-migrator when changing the repo version
···15 # Kubo makes changes to its source tarball that don't match the git source.
16 src = fetchurl {
17 url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz";
18+ hash = "sha256-+Mk3rDdtjhETmdaOOSXEFdLTJ0nX9G3qUxctsu5vrSc=";
19 };
2021 # tarball contains multiple files/directories
···2021buildGoModule rec {
22 pname = "gitea";
23- version = "1.21.1";
2425 # not fetching directly from the git repo, because that lacks several vendor files for the web UI
26 src = fetchurl {
27 url = "https://dl.gitea.com/gitea/${version}/gitea-src-${version}.tar.gz";
28- hash = "sha256-5WEHUMQsQNgrglS+xJ4IWHUl0a6RLLPyx0l+ECJ4R9g=";
29 };
3031 vendorHash = null;
···2021buildGoModule rec {
22 pname = "gitea";
23+ version = "1.21.2";
2425 # not fetching directly from the git repo, because that lacks several vendor files for the web UI
26 src = fetchurl {
27 url = "https://dl.gitea.com/gitea/${version}/gitea-src-${version}.tar.gz";
28+ hash = "sha256-+zG4tyJjSwocIDVwOj4RhwF7h/6WBCOG/6j4B1ADXas=";
29 };
3031 vendorHash = null;
···6}:
78let
9- nuget-source = stdenvNoCC.mkDerivation rec {
10 inherit name;
1112- meta.description = description;
13 nativeBuildInputs = [ python3 ];
1415 buildCommand = ''
···18 # use -L to follow symbolic links. When `projectReferences` is used in
19 # buildDotnetModule, one of the deps will be a symlink farm.
20 find -L ${lib.concatStringsSep " " deps} -type f -name '*.nupkg' -exec \
21- cp --no-clobber '{}' $out/lib ';'
2223 # Generates a list of all licenses' spdx ids, if available.
24 # Note that this currently ignores any license provided in plain text (e.g. "LICENSE.txt")
25 python ${./extract-licenses-from-nupkgs.py} $out/lib > $out/share/licenses
26 '';
0027 } // { # We need data from `$out` for `meta`, so we have to use overrides as to not hit infinite recursion.
28- meta.licence = let
29- depLicenses = lib.splitString "\n" (builtins.readFile "${nuget-source}/share/licenses");
30- in (lib.flatten (lib.forEach depLicenses (spdx:
31- lib.optionals (spdx != "") (lib.getLicenseFromSpdxId spdx)
32- )));
00033 };
34in nuget-source
···6}:
78let
9+ nuget-source = stdenvNoCC.mkDerivation {
10 inherit name;
11012 nativeBuildInputs = [ python3 ];
1314 buildCommand = ''
···17 # use -L to follow symbolic links. When `projectReferences` is used in
18 # buildDotnetModule, one of the deps will be a symlink farm.
19 find -L ${lib.concatStringsSep " " deps} -type f -name '*.nupkg' -exec \
20+ ln -s '{}' -t $out/lib ';'
2122 # Generates a list of all licenses' spdx ids, if available.
23 # Note that this currently ignores any license provided in plain text (e.g. "LICENSE.txt")
24 python ${./extract-licenses-from-nupkgs.py} $out/lib > $out/share/licenses
25 '';
26+27+ meta.description = description;
28 } // { # We need data from `$out` for `meta`, so we have to use overrides as to not hit infinite recursion.
29+ meta = nuget-source.meta // {
30+ licenses = let
31+ # TODO: avoid IFD
32+ depLicenses = lib.splitString "\n" (builtins.readFile "${nuget-source}/share/licenses");
33+ in lib.flatten (lib.forEach depLicenses (spdx:
34+ lib.optionals (spdx != "") (lib.getLicenseFromSpdxId spdx)
35+ ));
36+ };
37 };
38in nuget-source
···35 lib.trivial.pipe extensions [
36 (map (extension: lib.nameValuePair extension.extensionUuid extension))
37 builtins.listToAttrs
038 ];
3940 # Map the list of extensions to an attrset based on the pname as key, which is more human readable than the UUID
···6667 # Keep the last three versions in here
68 gnomeExtensions = lib.trivial.pipe (gnome43Extensions // gnome44Extensions // gnome45Extensions) [
069 # Apply some custom patches for automatically packaged extensions
70 (callPackage ./extensionOverrides.nix {})
71 # Add all manually packaged extensions
···88 # Make the set "public"
89 lib.recurseIntoAttrs
90 ];
091}
···35 lib.trivial.pipe extensions [
36 (map (extension: lib.nameValuePair extension.extensionUuid extension))
37 builtins.listToAttrs
38+ (attrs: attrs // { __attrsFailEvaluation = true; })
39 ];
4041 # Map the list of extensions to an attrset based on the pname as key, which is more human readable than the UUID
···6768 # Keep the last three versions in here
69 gnomeExtensions = lib.trivial.pipe (gnome43Extensions // gnome44Extensions // gnome45Extensions) [
70+ (v: builtins.removeAttrs v [ "__attrsFailEvaluation" ])
71 # Apply some custom patches for automatically packaged extensions
72 (callPackage ./extensionOverrides.nix {})
73 # Add all manually packaged extensions
···90 # Make the set "public"
91 lib.recurseIntoAttrs
92 ];
93+94}
···1-{ lib, stdenv, fetchFromGitHub }:
23stdenv.mkDerivation {
4 pname = "nvidia-optical-flow-sdk";
···18 cp -R * $out/include
19 '';
2021- postFixup = ''
22- mkdir -p $out/nix-support
23- echo $pname >> "$out/nix-support/include-in-cudatoolkit-root"
24- '';
002526 meta = with lib; {
27 description = "Nvidia optical flow headers for computing the relative motion of pixels between images";
···1+{ lib, stdenv, fetchFromGitHub, cudaPackages }:
23stdenv.mkDerivation {
4 pname = "nvidia-optical-flow-sdk";
···18 cp -R * $out/include
19 '';
2021+ # Makes setupCudaHook propagate nvidia-optical-flow-sdk together with cuda
22+ # packages. Currently used by opencv4.cxxdev, hopefully can be removed in the
23+ # future
24+ nativeBuildInputs = [
25+ cudaPackages.markForCudatoolkitRootHook
26+ ];
2728 meta = with lib; {
29 description = "Nvidia optical flow headers for computing the relative motion of pixels between images";
···2, config
3, buildPythonPackage
4, fetchFromGitHub
05, addOpenGLRunpath
06, pytestCheckHook
7, pythonRelaxDepsHook
8-, pkgsTargetTarget
9, cmake
10, ninja
11, pybind11
···23}:
2425let
26- # A time may come we'll want to be cross-friendly
27- #
28- # Short explanation: we need pkgsTargetTarget, because we use string
29- # interpolation instead of buildInputs.
30- #
31- # Long explanation: OpenAI/triton downloads and vendors a copy of NVidia's
32- # ptxas compiler. We're not running this ptxas on the build machine, but on
33- # the user's machine, i.e. our Target platform. The second "Target" in
34- # pkgsTargetTarget maybe doesn't matter, because ptxas compiles programs to
35- # be executed on the GPU.
36- # Cf. https://nixos.org/manual/nixpkgs/unstable/#sec-cross-infra
37- ptxas = "${pkgsTargetTarget.cudaPackages.cuda_nvcc}/bin/ptxas"; # Make sure cudaPackages is the right version each update (See python/setup.py)
38in
39buildPythonPackage rec {
40 pname = "triton";
41- version = "2.0.0";
42- format = "setuptools";
4344 src = fetchFromGitHub {
45 owner = "openai";
46 repo = pname;
47 rev = "v${version}";
48- hash = "sha256-9GZzugab+Pdt74Dj6zjlEzjj4BcJ69rzMJmqcVMxsKU=";
49 };
5051 patches = [
52- # TODO: there have been commits upstream aimed at removing the "torch"
53- # circular dependency, but the patches fail to apply on the release
54- # revision. Keeping the link for future reference
55- # Also cf. https://github.com/openai/triton/issues/1374
56-57- # (fetchpatch {
58- # url = "https://github.com/openai/triton/commit/fc7c0b0e437a191e421faa61494b2ff4870850f1.patch";
59- # hash = "sha256-f0shIqHJkVvuil2Yku7vuqWFn7VCRKFSFjYRlwx25ig=";
60- # })
61 ] ++ lib.optionals (!cudaSupport) [
62 ./0000-dont-download-ptxas.patch
63 ];
6465 nativeBuildInputs = [
066 pythonRelaxDepsHook
67 # pytestCheckHook # Requires torch (circular dependency) and probably needs GPUs:
68 cmake
···111 --replace "include(GoogleTest)" "find_package(GTest REQUIRED)"
112 '' + lib.optionalString cudaSupport ''
113 # Use our linker flags
114- substituteInPlace python/triton/compiler.py \
115 --replace '${oldStr}' '${newStr}'
116 '';
117
···1+{ lib
2+, stdenv
3+, fetchFromGitHub
4+, SDL2
5+, libpng
6+, libjpeg
7+, glew
8+, openal
9+, scons
10+, libmad
11+, libuuid
12}:
1314stdenv.mkDerivation rec {
15 pname = "endless-sky";
16+ version = "0.10.4";
1718 src = fetchFromGitHub {
19 owner = "endless-sky";
20 repo = "endless-sky";
21 rev = "v${version}";
22+ sha256 = "sha256-VTg8H6umq9yMMP274StIJfEZZvUFDILiMKhioam58QE=";
23 };
2425 patches = [
26 ./fixes.patch
27 ];
2829+ postPatch = ''
30+ # the trailing slash is important!!
31+ # endless sky naively joins the paths with string concatenation
32+ # so it's essential that there be a trailing slash on the resources path
33+ substituteInPlace source/Files.cpp \
34+ --replace '%NIXPKGS_RESOURCES_PATH%' "$out/share/games/endless-sky/"
35+ '';
36+37 preBuild = ''
38 export AR="${stdenv.cc.targetPrefix}gcc-ar"
39 '';
···41 enableParallelBuilding = true;
4243 buildInputs = [
44+ SDL2
45+ libpng
46+ libjpeg
47+ glew
48+ openal
49+ scons
50+ libmad
51+ libuuid
52 ];
5354 prefixKey = "PREFIX=";
···57 description = "A sandbox-style space exploration game similar to Elite, Escape Velocity, or Star Control";
58 homepage = "https://endless-sky.github.io/";
59 license = with licenses; [
60+ gpl3Plus
61+ cc-by-sa-30
62+ cc-by-sa-40
63+ publicDomain
64 ];
65+ maintainers = with maintainers; [ lheckemann _360ied ];
66 platforms = platforms.linux; # Maybe other non-darwin Unix
67 };
68}
+28-11
pkgs/games/endless-sky/fixes.patch
···12 # Install the desktop file:
13 env.Install("$DESTDIR$PREFIX/share/applications", "endless-sky.desktop")
14diff --git a/source/Files.cpp b/source/Files.cpp
15-index c8c8957..d196459 100644
16--- a/source/Files.cpp
17+++ b/source/Files.cpp
18-@@ -114,15 +114,9 @@ void Files::Init(const char * const *argv)
19- if(resources.back() != '/')
20- resources += '/';
21- #if defined __linux__ || defined __FreeBSD__ || defined __DragonFly__
00000022- // Special case, for Linux: the resource files are not in the same place as
23- // the executable, but are under the same prefix (/usr or /usr/local).
24- static const string LOCAL_PATH = "/usr/local/";
···28- resources = LOCAL_PATH + RESOURCE_PATH;
29- else if(!resources.compare(0, STANDARD_PATH.length(), STANDARD_PATH))
30- resources = STANDARD_PATH + RESOURCE_PATH;
31-+ // Workaround for NixOS. Not sure how to proceed with other OSes, feedback
32-+ // is welcome.
33-+ resources += "../share/games/endless-sky/";
34- #elif defined __APPLE__
35- // Special case for Mac OS X: the resources are in ../Resources relative to
36- // the folder the binary is in.
00000000000
···12 # Install the desktop file:
13 env.Install("$DESTDIR$PREFIX/share/applications", "endless-sky.desktop")
14diff --git a/source/Files.cpp b/source/Files.cpp
15+index de27023e..4225051f 100644
16--- a/source/Files.cpp
17+++ b/source/Files.cpp
18+@@ -108,32 +108,9 @@ void Files::Init(const char * const *argv)
19+ resources = str;
20+ SDL_free(str);
21+ }
22+-#if defined _WIN32
23+- FixWindowsSlashes(resources);
24+-#endif
25+- if(resources.back() != '/')
26+- resources += '/';
27+-#if defined __linux__ || defined __FreeBSD__ || defined __DragonFly__
28- // Special case, for Linux: the resource files are not in the same place as
29- // the executable, but are under the same prefix (/usr or /usr/local).
30- static const string LOCAL_PATH = "/usr/local/";
···34- resources = LOCAL_PATH + RESOURCE_PATH;
35- else if(!resources.compare(0, STANDARD_PATH.length(), STANDARD_PATH))
36- resources = STANDARD_PATH + RESOURCE_PATH;
37+-#endif
38+- // If the resources are not here, search in the directories containing this
39+- // one. This allows, for example, a Mac app that does not actually have the
40+- // resources embedded within it.
41+- while(!Exists(resources + "credits.txt"))
42+- {
43+- size_t pos = resources.rfind('/', resources.length() - 2);
44+- if(pos == string::npos || pos == 0)
45+- throw runtime_error("Unable to find the resource directories!");
46+- resources.erase(pos + 1);
47+- }
48++
49++ resources = "%NIXPKGS_RESOURCES_PATH%";
50++
51+ dataPath = resources + "data/";
52+ imagePath = resources + "images/";
53+ soundPath = resources + "sounds/";
···1{
2 "bookmarks": {
3- "sha256": "14dkyqm04d4ix114jbcgbx10zvkv4qlx4n56chpqz0w1y7x8idpd",
4- "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.1.1/bookmarks-13.1.1.tar.gz",
5- "version": "13.1.1",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13- "sha256": "1iq8np72pjw2bn4zmbp2rmrh12n4z62rwrz2bb94xjza1fws7b2v",
14- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.5.3/calendar-v4.5.3.tar.gz",
15- "version": "4.5.3",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23- "sha256": "1pz2px5amk3byn4pq86cyyjv4hrqhsjz61xfm7cl7z8qfckqfhi2",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.4.2/contacts-v5.4.2.tar.gz",
25- "version": "5.4.2",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···30 ]
31 },
32 "cookbook": {
33- "sha256": "18rzvdqd99nlkk3p0y9y8b17ihw5c4c9wsx8psq6xadspm97002y",
34- "url": "https://github.com/nextcloud/cookbook/releases/download/v0.10.2/Cookbook-0.10.2.tar.gz",
35- "version": "0.10.2",
36 "description": "A library for all your recipes. It uses JSON files following the schema.org recipe format. To add a recipe to the collection, you can paste in the URL of the recipe, and the provided web page will be parsed and downloaded to whichever folder you specify in the app settings.",
37- "homepage": "",
38 "licenses": [
39 "agpl"
40 ]
41 },
42 "cospend": {
43- "sha256": "1rg9k33yapbl8chpxx3bjyzc9h4krjavksbxsvw14kpm01rss3j9",
44- "url": "https://github.com/julien-nc/cospend-nc/releases/download/v1.5.10/cospend-1.5.10.tar.gz",
45- "version": "1.5.10",
46 "description": "# Nextcloud Cospend 💰\n\nNextcloud Cospend is a group/shared budget manager. It was inspired by the great [IHateMoney](https://github.com/spiral-project/ihatemoney/).\n\nYou can use it when you share a house, when you go on vacation with friends, whenever you share money with others.\n\nIt lets you create projects with members and bills. Each member has a balance computed from the project bills. This way you can see who owes the group and who the group owes. Ultimately you can ask for a settlement plan telling you which payments to make to reset members balances.\n\nProject members are independent from Nextcloud users. Projects can be accessed and modified by people without a Nextcloud account. Each project has an ID and a password for guest access.\n\n[MoneyBuster](https://gitlab.com/eneiluj/moneybuster) Android client is [available in F-Droid](https://f-droid.org/packages/net.eneiluj.moneybuster/) and on the [Play store](https://play.google.com/store/apps/details?id=net.eneiluj.moneybuster).\n\n[PayForMe](https://github.com/mayflower/PayForMe) iOS client is currently being developped!\n\n## Features\n\n* ✎ create/edit/delete projects, members, bills, bill categories, currencies\n* ⚖ check member balances\n* 🗠 display project statistics\n* ♻ display settlement plan\n* 🎇 automatically create reimbursement bills from settlement plan\n* 🗓 create recurring bills (daily/weekly/monthly/yearly)\n* 📊 optionally provide custom amount for each member in new bills\n* 🔗 link bills with personal files (picture of physical bill for example)\n* 👩 guest access for people outside Nextcloud\n* 👫 share projects with Nextcloud users/groups/circles\n* 🖫 import/export projects as csv (compatible with csv files from IHateMoney)\n* 🔗 generate link/QRCode to easily import projects in MoneyBuster\n* 🗲 implement Nextcloud notifications and activity stream\n\nThis app is tested on Nextcloud 20+ with Firefox 57+ and Chromium.\n\nThis app is under development.\n\n🌍 Help us to translate this app on [Nextcloud-Cospend/MoneyBuster Crowdin project](https://crowdin.com/project/moneybuster).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/cospend-nc/blob/master/CONTRIBUTING.md).\n\n## Documentation\n\n* [User documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/user.md)\n* [Admin documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/admin.md)\n* [Developer documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/dev.md)\n* [CHANGELOG](https://github.com/eneiluj/cospend-nc/blob/master/CHANGELOG.md#change-log)\n* [AUTHORS](https://github.com/eneiluj/cospend-nc/blob/master/AUTHORS.md#authors)\n\n## Known issues\n\n* it does not make you rich\n\nAny feedback will be appreciated.\n\n\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
47 "homepage": "https://github.com/julien-nc/cospend-nc",
48 "licenses": [
···50 ]
51 },
52 "deck": {
53- "sha256": "15hir3fssvzyysazbaad8qiz0bv00x73c2wfdj5aviz9h0gp4x4v",
54- "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.9.4/deck-v1.9.4.tar.gz",
55- "version": "1.9.4",
56 "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
57 "homepage": "https://github.com/nextcloud/deck",
58 "licenses": [
···80 ]
81 },
82 "forms": {
83- "sha256": "155z87wyv2p06c3kpy9zaw6qf5s7s0ah4wfw022s4cc21i3rcwxv",
84- "url": "https://github.com/nextcloud-releases/forms/releases/download/v3.3.1/forms-v3.3.1.tar.gz",
85- "version": "3.3.1",
86 "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
87 "homepage": "https://github.com/nextcloud/forms",
88 "licenses": [
···120 ]
121 },
122 "mail": {
123- "sha256": "0ascail3vfkv3mm5s4s3ma74d6qxai76kdqxknmljnw56xb19qfv",
124- "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.4.4/mail-v3.4.4.tar.gz",
125- "version": "3.4.4",
126 "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/).",
127 "homepage": "https://github.com/nextcloud/mail#readme",
128 "licenses": [
···140 ]
141 },
142 "memories": {
143- "sha256": "1yn1wkv4jxpc8faf4rl46yfddyplnryrkws3jz0x1wcr9zlxdkng",
144- "url": "https://github.com/pulsejet/memories/releases/download/v6.1.0/memories.tar.gz",
145- "version": "6.1.0",
146 "description": "# Memories: Photo Management for Nextcloud\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects, powered by [recognize](https://github.com/nextcloud/recognize) and [facerecognition](https://github.com/matiasdelellis/facerecognition).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Work from any device, of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates and other metadata on photos quickly and in bulk.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Transcode videos and use HLS for maximal performance.\n- **🗺️ Map**: View your photos on a map, tagged with accurate reverse geocoding.\n- **📦 Migration**: Migrate easily from Nextcloud Photos and Google Takeout.\n- **⚡️ Performance**: Do all this very fast.\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store (try a demo [here](https://demo.memories.gallery/apps/memories/)).\n1. Perform the recommended [configuration steps](https://memories.gallery/config/).\n1. Run `php occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
147 "homepage": "https://memories.gallery",
148 "licenses": [
···170 ]
171 },
172 "notes": {
173- "sha256": "1g4ibrymsfd2bcvmyfyrl23z2kh4bgkwrgyacvdx1glk44di6sgc",
174- "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.8.1/notes.tar.gz",
175- "version": "4.8.1",
176 "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.",
177 "homepage": "https://github.com/nextcloud/notes",
178 "licenses": [
···180 ]
181 },
182 "notify_push": {
183- "sha256": "0lwyy1pnyfw464vab1v5k8q0rgarrj5w12cf1nsywjaafb8y1ym0",
184- "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.5/notify_push-v0.6.5.tar.gz",
185- "version": "0.6.5",
186 "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
187 "homepage": "",
188 "licenses": [
···199 "apache"
200 ]
201 },
0000000000202 "polls": {
203 "sha256": "1dmws4ybv3pzxz5g9c7ghblx0nfal2ssmsg7hjcs1n4xcjc6585p",
204 "url": "https://github.com/nextcloud/polls/releases/download/v5.4.2/polls.tar.gz",
···210 ]
211 },
212 "previewgenerator": {
213- "sha256": "0ziyl7kqgivk9xvkd12byps6bb3fvcvdgprfa9ffy1zrgpl9syhk",
214- "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.3.0/previewgenerator-v5.3.0.tar.gz",
215- "version": "5.3.0",
216 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
217 "homepage": "https://github.com/nextcloud/previewgenerator",
218 "licenses": [
···220 ]
221 },
222 "qownnotesapi": {
223- "sha256": "1hkcqcc6y7x0zrc88qqmsf7mz0dl1kk06gsl6la3kr33fxr0cp0k",
224- "url": "https://github.com/pbek/qownnotesapi/releases/download/v23.6.0/qownnotesapi-nc.tar.gz",
225- "version": "23.6.0",
226 "description": "QOwnNotesAPI is the Nextcloud/ownCloud API for [QOwnNotes](http://www.qownnotes.org), the open source notepad for Linux, macOS and Windows, that works together with the notes application of Nextcloud/ownCloud.\n\nThe only purpose of this App is to provide API access to your Nextcloud/ownCloud server for your QOwnNotes desktop installation, you cannot use this App for anything else, if you don't have QOwnNotes installed on your desktop computer!",
227 "homepage": "https://github.com/pbek/qownnotesapi",
228 "licenses": [
···270 ]
271 },
272 "twofactor_webauthn": {
273- "sha256": "0z6m2chq5kxc8f10g6n1lh51yi10svy2qp5gp0v8xs71apqcc2wx",
274- "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.3.0/twofactor_webauthn-v1.3.0.tar.gz",
275- "version": "1.3.0",
276 "description": "A two-factor provider for WebAuthn devices",
277 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
278 "licenses": [
···290 ]
291 },
292 "user_saml": {
293- "sha256": "04ivgqdls72p6x5yrh5p5ycbbfmxhzd0dqin1grblm6cbl7b4s2k",
294- "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v5.2.4/user_saml-v5.2.4.tar.gz",
295- "version": "5.2.4",
296 "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.",
297 "homepage": "https://github.com/nextcloud/user_saml",
298 "licenses": [
···1{
2 "bookmarks": {
3+ "sha256": "04yngkmsjq6zj5qih86ybfr2cybqsz3gb5dasm6yhmkvd1ar5s39",
4+ "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.1.2/bookmarks-13.1.2.tar.gz",
5+ "version": "13.1.2",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13+ "sha256": "0d6mfqwq44z9kn8nh3zmfzr05zi2rwnw3nhd9wc12dy6npynkcpm",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.6.0/calendar-v4.6.0.tar.gz",
15+ "version": "4.6.0",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23+ "sha256": "0pbl4fmpg1jxwjj141gqnmwzgm3ji1z686kr11rmldfkjvhjss2x",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.5.0/contacts-v5.5.0.tar.gz",
25+ "version": "5.5.0",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···30 ]
31 },
32 "cookbook": {
33+ "sha256": "06d1rhvcwxzi8hl99nz3hg32fznv0q5m06cwjy3gc81j53qz0ksc",
34+ "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.10.5/cookbook-0.10.5.tar.gz",
35+ "version": "0.10.5",
36 "description": "A library for all your recipes. It uses JSON files following the schema.org recipe format. To add a recipe to the collection, you can paste in the URL of the recipe, and the provided web page will be parsed and downloaded to whichever folder you specify in the app settings.",
37+ "homepage": "https://github.com/nextcloud/cookbook/",
38 "licenses": [
39 "agpl"
40 ]
41 },
42 "cospend": {
43+ "sha256": "0v61wdrf4wxjx2xv81599k9k855iyhazxnh4shqvglfb01fi8qhn",
44+ "url": "https://github.com/julien-nc/cospend-nc/releases/download/v1.5.12/cospend-1.5.12.tar.gz",
45+ "version": "1.5.12",
46 "description": "# Nextcloud Cospend 💰\n\nNextcloud Cospend is a group/shared budget manager. It was inspired by the great [IHateMoney](https://github.com/spiral-project/ihatemoney/).\n\nYou can use it when you share a house, when you go on vacation with friends, whenever you share money with others.\n\nIt lets you create projects with members and bills. Each member has a balance computed from the project bills. This way you can see who owes the group and who the group owes. Ultimately you can ask for a settlement plan telling you which payments to make to reset members balances.\n\nProject members are independent from Nextcloud users. Projects can be accessed and modified by people without a Nextcloud account. Each project has an ID and a password for guest access.\n\n[MoneyBuster](https://gitlab.com/eneiluj/moneybuster) Android client is [available in F-Droid](https://f-droid.org/packages/net.eneiluj.moneybuster/) and on the [Play store](https://play.google.com/store/apps/details?id=net.eneiluj.moneybuster).\n\n[PayForMe](https://github.com/mayflower/PayForMe) iOS client is currently being developped!\n\n## Features\n\n* ✎ create/edit/delete projects, members, bills, bill categories, currencies\n* ⚖ check member balances\n* 🗠 display project statistics\n* ♻ display settlement plan\n* 🎇 automatically create reimbursement bills from settlement plan\n* 🗓 create recurring bills (daily/weekly/monthly/yearly)\n* 📊 optionally provide custom amount for each member in new bills\n* 🔗 link bills with personal files (picture of physical bill for example)\n* 👩 guest access for people outside Nextcloud\n* 👫 share projects with Nextcloud users/groups/circles\n* 🖫 import/export projects as csv (compatible with csv files from IHateMoney)\n* 🔗 generate link/QRCode to easily import projects in MoneyBuster\n* 🗲 implement Nextcloud notifications and activity stream\n\nThis app is tested on Nextcloud 20+ with Firefox 57+ and Chromium.\n\nThis app is under development.\n\n🌍 Help us to translate this app on [Nextcloud-Cospend/MoneyBuster Crowdin project](https://crowdin.com/project/moneybuster).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/cospend-nc/blob/master/CONTRIBUTING.md).\n\n## Documentation\n\n* [User documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/user.md)\n* [Admin documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/admin.md)\n* [Developer documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/dev.md)\n* [CHANGELOG](https://github.com/eneiluj/cospend-nc/blob/master/CHANGELOG.md#change-log)\n* [AUTHORS](https://github.com/eneiluj/cospend-nc/blob/master/AUTHORS.md#authors)\n\n## Known issues\n\n* it does not make you rich\n\nAny feedback will be appreciated.\n\n\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
47 "homepage": "https://github.com/julien-nc/cospend-nc",
48 "licenses": [
···50 ]
51 },
52 "deck": {
53+ "sha256": "1dkvvk7n120hgk3pf03g2ixlylp7nxmi3wh9qsp8b0fimclpd5hz",
54+ "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.9.5/deck-v1.9.5.tar.gz",
55+ "version": "1.9.5",
56 "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
57 "homepage": "https://github.com/nextcloud/deck",
58 "licenses": [
···80 ]
81 },
82 "forms": {
83+ "sha256": "1mipdri1flhkdwknsp72k87y7xfis72bzsnw1alzr1cbp8d6ardm",
84+ "url": "https://github.com/nextcloud-releases/forms/releases/download/v3.4.3/forms-v3.4.3.tar.gz",
85+ "version": "3.4.3",
86 "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
87 "homepage": "https://github.com/nextcloud/forms",
88 "licenses": [
···120 ]
121 },
122 "mail": {
123+ "sha256": "0ycyj5ydnvnf5cjnxkpxd489rymlag8df67n5lawp43cvgg2jn2d",
124+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.5.0/mail-v3.5.0.tar.gz",
125+ "version": "3.5.0",
126 "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/).",
127 "homepage": "https://github.com/nextcloud/mail#readme",
128 "licenses": [
···140 ]
141 },
142 "memories": {
143+ "sha256": "1rz0pkis0vz6hjyj53jbz7dcmd9yxbh1h9p4nhg4a2p7yyd5092m",
144+ "url": "https://github.com/pulsejet/memories/releases/download/v6.1.5/memories.tar.gz",
145+ "version": "6.1.5",
146 "description": "# Memories: Photo Management for Nextcloud\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects, powered by [recognize](https://github.com/nextcloud/recognize) and [facerecognition](https://github.com/matiasdelellis/facerecognition).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Work from any device, of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates and other metadata on photos quickly and in bulk.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Transcode videos and use HLS for maximal performance.\n- **🗺️ Map**: View your photos on a map, tagged with accurate reverse geocoding.\n- **📦 Migration**: Migrate easily from Nextcloud Photos and Google Takeout.\n- **⚡️ Performance**: Do all this very fast.\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store (try a demo [here](https://demo.memories.gallery/apps/memories/)).\n1. Perform the recommended [configuration steps](https://memories.gallery/config/).\n1. Run `php occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
147 "homepage": "https://memories.gallery",
148 "licenses": [
···170 ]
171 },
172 "notes": {
173+ "sha256": "19p5qg94ch72y4lym6s8f6x3dly5v3mm97dx29swnkqplflas3zz",
174+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.9.0/notes-v4.9.0.tar.gz",
175+ "version": "4.9.0",
176 "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.",
177 "homepage": "https://github.com/nextcloud/notes",
178 "licenses": [
···180 ]
181 },
182 "notify_push": {
183+ "sha256": "1by9qw9bsf48cyczhfxpz9ifrg2dayvcn26m309dicqgjqkz91hd",
184+ "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.6/notify_push-v0.6.6.tar.gz",
185+ "version": "0.6.6",
186 "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
187 "homepage": "",
188 "licenses": [
···199 "apache"
200 ]
201 },
202+ "phonetrack": {
203+ "sha256": "1p15vw7c5c1h08czyxi1r6svjd5hjmnc0i6is4vl3xq2kfjmcyyx",
204+ "url": "https://github.com/julien-nc/phonetrack/releases/download/v0.7.6/phonetrack-0.7.6.tar.gz",
205+ "version": "0.7.6",
206+ "description": "# PhoneTrack Nextcloud application\n\n📱 PhoneTrack is a Nextcloud application to track and store mobile device's locations.\n\n🗺 It receives information from mobile phone's logging apps and displays it dynamically on a map.\n\n🌍 Help us to translate this app on [PhoneTrack Crowdin project](https://crowdin.com/project/phonetrack).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CONTRIBUTING.md).\n\nHow to use PhoneTrack :\n\n* Create a tracking session.\n* Give the logging link\\* to the mobile devices. Choose the [logging method](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#logging-methods) you prefer.\n* Watch the session's devices location in real time (or not) in PhoneTrack or share it with public pages.\n\n(\\*) Don't forget to set the device name in the link (rather than in the logging app settings). Replace \"yourname\" with the desired device name. Setting the device name in logging app settings only works with Owntracks, Traccar and OpenGTS.\n\nOn PhoneTrack main page, while watching a session, you can :\n\n* 📍 Display location history\n* ⛛ Filter points\n* ✎ Manually edit/add/delete points\n* ✎ Edit devices (rename, change colour/shape, move to another session)\n* ⛶ Define geofencing zones for devices\n* ⚇ Define proximity alerts for device pairs\n* 🖧 Share a session to other Nextcloud users or with a public link (read-only)\n* 🔗 Generate public share links with optional restrictions (filters, device name, last positions only, geofencing simplification)\n* 🖫 Import/export a session in GPX format (one file with one track per device or one file per device)\n* 🗠 Display sessions statistics\n* 🔒 [Reserve a device name](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#device-name-reservation) to make sure only authorised user can log with this name\n* 🗓 Toggle session auto export and auto purge (daily/weekly/monthly)\n* ◔ Choose what to do when point number quota is reached (block logging or delete oldest point)\n\nPublic page and public filtered page work like main page except there is only one session displayed, everything is read-only and there is no need to be logged in.\n\nThis app is tested on Nextcloud 17 with Firefox 57+ and Chromium.\n\nThis app is compatible with theming colours and accessibility themes !\n\nThis app is under development.\n\n## Install\n\nSee the [AdminDoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc) for installation details.\n\nCheck [CHANGELOG](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CHANGELOG.md#change-log) file to see what's new and what's coming in next release.\n\nCheck [AUTHORS](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/AUTHORS.md#authors) file to see complete list of authors.\n\n## Known issues\n\n* PhoneTrack **now works** with Nextcloud group restriction activated. See [admindoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc#issue-with-phonetrack-restricted-to-some-groups-in-nextcloud).\n\nAny feedback will be appreciated.\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
207+ "homepage": "https://github.com/julien-nc/phonetrack-oc",
208+ "licenses": [
209+ "agpl"
210+ ]
211+ },
212 "polls": {
213 "sha256": "1dmws4ybv3pzxz5g9c7ghblx0nfal2ssmsg7hjcs1n4xcjc6585p",
214 "url": "https://github.com/nextcloud/polls/releases/download/v5.4.2/polls.tar.gz",
···220 ]
221 },
222 "previewgenerator": {
223+ "sha256": "08f0ivxqa2b54w2q4lycb3p5ngqyk92n2qll54pmpj54pfn1sj3m",
224+ "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.4.0/previewgenerator-v5.4.0.tar.gz",
225+ "version": "5.4.0",
226 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
227 "homepage": "https://github.com/nextcloud/previewgenerator",
228 "licenses": [
···230 ]
231 },
232 "qownnotesapi": {
233+ "sha256": "1pyr4b3w6gsy83ci6cy0wfv870qm2v957nl4w6xk989iyknk4ana",
234+ "url": "https://github.com/pbek/qownnotesapi/releases/download/v23.12.0/qownnotesapi-nc.tar.gz",
235+ "version": "23.12.0",
236 "description": "QOwnNotesAPI is the Nextcloud/ownCloud API for [QOwnNotes](http://www.qownnotes.org), the open source notepad for Linux, macOS and Windows, that works together with the notes application of Nextcloud/ownCloud.\n\nThe only purpose of this App is to provide API access to your Nextcloud/ownCloud server for your QOwnNotes desktop installation, you cannot use this App for anything else, if you don't have QOwnNotes installed on your desktop computer!",
237 "homepage": "https://github.com/pbek/qownnotesapi",
238 "licenses": [
···280 ]
281 },
282 "twofactor_webauthn": {
283+ "sha256": "1p4ng7nprlcgw7sdfd7wqx5az86a856f1v470lahg2nfbx3fg296",
284+ "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.3.2/twofactor_webauthn-v1.3.2.tar.gz",
285+ "version": "1.3.2",
286 "description": "A two-factor provider for WebAuthn devices",
287 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
288 "licenses": [
···300 ]
301 },
302 "user_saml": {
303+ "sha256": "0q189wkh0nh5y4z9j4bpgn4xnwwn8y8m8y34bp5nbzfz05xpgr9f",
304+ "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v5.2.5/user_saml-v5.2.5.tar.gz",
305+ "version": "5.2.5",
306 "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.",
307 "homepage": "https://github.com/nextcloud/user_saml",
308 "licenses": [
+56-46
pkgs/servers/nextcloud/packages/27.json
···1{
2 "bookmarks": {
3- "sha256": "14dkyqm04d4ix114jbcgbx10zvkv4qlx4n56chpqz0w1y7x8idpd",
4- "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.1.1/bookmarks-13.1.1.tar.gz",
5- "version": "13.1.1",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13- "sha256": "1iq8np72pjw2bn4zmbp2rmrh12n4z62rwrz2bb94xjza1fws7b2v",
14- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.5.3/calendar-v4.5.3.tar.gz",
15- "version": "4.5.3",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23- "sha256": "1pz2px5amk3byn4pq86cyyjv4hrqhsjz61xfm7cl7z8qfckqfhi2",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.4.2/contacts-v5.4.2.tar.gz",
25- "version": "5.4.2",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···30 ]
31 },
32 "cookbook": {
33- "sha256": "18rzvdqd99nlkk3p0y9y8b17ihw5c4c9wsx8psq6xadspm97002y",
34- "url": "https://github.com/nextcloud/cookbook/releases/download/v0.10.2/Cookbook-0.10.2.tar.gz",
35- "version": "0.10.2",
36 "description": "A library for all your recipes. It uses JSON files following the schema.org recipe format. To add a recipe to the collection, you can paste in the URL of the recipe, and the provided web page will be parsed and downloaded to whichever folder you specify in the app settings.",
37- "homepage": "",
38 "licenses": [
39 "agpl"
40 ]
41 },
42 "cospend": {
43- "sha256": "1rg9k33yapbl8chpxx3bjyzc9h4krjavksbxsvw14kpm01rss3j9",
44- "url": "https://github.com/julien-nc/cospend-nc/releases/download/v1.5.10/cospend-1.5.10.tar.gz",
45- "version": "1.5.10",
46 "description": "# Nextcloud Cospend 💰\n\nNextcloud Cospend is a group/shared budget manager. It was inspired by the great [IHateMoney](https://github.com/spiral-project/ihatemoney/).\n\nYou can use it when you share a house, when you go on vacation with friends, whenever you share money with others.\n\nIt lets you create projects with members and bills. Each member has a balance computed from the project bills. This way you can see who owes the group and who the group owes. Ultimately you can ask for a settlement plan telling you which payments to make to reset members balances.\n\nProject members are independent from Nextcloud users. Projects can be accessed and modified by people without a Nextcloud account. Each project has an ID and a password for guest access.\n\n[MoneyBuster](https://gitlab.com/eneiluj/moneybuster) Android client is [available in F-Droid](https://f-droid.org/packages/net.eneiluj.moneybuster/) and on the [Play store](https://play.google.com/store/apps/details?id=net.eneiluj.moneybuster).\n\n[PayForMe](https://github.com/mayflower/PayForMe) iOS client is currently being developped!\n\n## Features\n\n* ✎ create/edit/delete projects, members, bills, bill categories, currencies\n* ⚖ check member balances\n* 🗠 display project statistics\n* ♻ display settlement plan\n* 🎇 automatically create reimbursement bills from settlement plan\n* 🗓 create recurring bills (daily/weekly/monthly/yearly)\n* 📊 optionally provide custom amount for each member in new bills\n* 🔗 link bills with personal files (picture of physical bill for example)\n* 👩 guest access for people outside Nextcloud\n* 👫 share projects with Nextcloud users/groups/circles\n* 🖫 import/export projects as csv (compatible with csv files from IHateMoney)\n* 🔗 generate link/QRCode to easily import projects in MoneyBuster\n* 🗲 implement Nextcloud notifications and activity stream\n\nThis app is tested on Nextcloud 20+ with Firefox 57+ and Chromium.\n\nThis app is under development.\n\n🌍 Help us to translate this app on [Nextcloud-Cospend/MoneyBuster Crowdin project](https://crowdin.com/project/moneybuster).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/cospend-nc/blob/master/CONTRIBUTING.md).\n\n## Documentation\n\n* [User documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/user.md)\n* [Admin documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/admin.md)\n* [Developer documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/dev.md)\n* [CHANGELOG](https://github.com/eneiluj/cospend-nc/blob/master/CHANGELOG.md#change-log)\n* [AUTHORS](https://github.com/eneiluj/cospend-nc/blob/master/AUTHORS.md#authors)\n\n## Known issues\n\n* it does not make you rich\n\nAny feedback will be appreciated.\n\n\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
47 "homepage": "https://github.com/julien-nc/cospend-nc",
48 "licenses": [
···50 ]
51 },
52 "deck": {
53- "sha256": "18gscc95zay7nrzdm1h5b52r4bpmpzc1h1xb00214qnb59mydiwr",
54- "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.11.1/deck-v1.11.1.tar.gz",
55- "version": "1.11.1",
56 "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
57 "homepage": "https://github.com/nextcloud/deck",
58 "licenses": [
···80 ]
81 },
82 "forms": {
83- "sha256": "155z87wyv2p06c3kpy9zaw6qf5s7s0ah4wfw022s4cc21i3rcwxv",
84- "url": "https://github.com/nextcloud-releases/forms/releases/download/v3.3.1/forms-v3.3.1.tar.gz",
85- "version": "3.3.1",
86 "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
87 "homepage": "https://github.com/nextcloud/forms",
88 "licenses": [
···120 ]
121 },
122 "mail": {
123- "sha256": "0ascail3vfkv3mm5s4s3ma74d6qxai76kdqxknmljnw56xb19qfv",
124- "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.4.4/mail-v3.4.4.tar.gz",
125- "version": "3.4.4",
126 "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/).",
127 "homepage": "https://github.com/nextcloud/mail#readme",
128 "licenses": [
···140 ]
141 },
142 "memories": {
143- "sha256": "1yn1wkv4jxpc8faf4rl46yfddyplnryrkws3jz0x1wcr9zlxdkng",
144- "url": "https://github.com/pulsejet/memories/releases/download/v6.1.0/memories.tar.gz",
145- "version": "6.1.0",
146 "description": "# Memories: Photo Management for Nextcloud\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects, powered by [recognize](https://github.com/nextcloud/recognize) and [facerecognition](https://github.com/matiasdelellis/facerecognition).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Work from any device, of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates and other metadata on photos quickly and in bulk.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Transcode videos and use HLS for maximal performance.\n- **🗺️ Map**: View your photos on a map, tagged with accurate reverse geocoding.\n- **📦 Migration**: Migrate easily from Nextcloud Photos and Google Takeout.\n- **⚡️ Performance**: Do all this very fast.\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store (try a demo [here](https://demo.memories.gallery/apps/memories/)).\n1. Perform the recommended [configuration steps](https://memories.gallery/config/).\n1. Run `php occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
147 "homepage": "https://memories.gallery",
148 "licenses": [
···170 ]
171 },
172 "notes": {
173- "sha256": "1g4ibrymsfd2bcvmyfyrl23z2kh4bgkwrgyacvdx1glk44di6sgc",
174- "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.8.1/notes.tar.gz",
175- "version": "4.8.1",
176 "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.",
177 "homepage": "https://github.com/nextcloud/notes",
178 "licenses": [
···180 ]
181 },
182 "notify_push": {
183- "sha256": "0lwyy1pnyfw464vab1v5k8q0rgarrj5w12cf1nsywjaafb8y1ym0",
184- "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.5/notify_push-v0.6.5.tar.gz",
185- "version": "0.6.5",
186 "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
187 "homepage": "",
188 "licenses": [
···199 "apache"
200 ]
201 },
0000000000202 "polls": {
203 "sha256": "1dmws4ybv3pzxz5g9c7ghblx0nfal2ssmsg7hjcs1n4xcjc6585p",
204 "url": "https://github.com/nextcloud/polls/releases/download/v5.4.2/polls.tar.gz",
···210 ]
211 },
212 "previewgenerator": {
213- "sha256": "0ziyl7kqgivk9xvkd12byps6bb3fvcvdgprfa9ffy1zrgpl9syhk",
214- "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.3.0/previewgenerator-v5.3.0.tar.gz",
215- "version": "5.3.0",
216 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
217 "homepage": "https://github.com/nextcloud/previewgenerator",
218 "licenses": [
···220 ]
221 },
222 "qownnotesapi": {
223- "sha256": "1hkcqcc6y7x0zrc88qqmsf7mz0dl1kk06gsl6la3kr33fxr0cp0k",
224- "url": "https://github.com/pbek/qownnotesapi/releases/download/v23.6.0/qownnotesapi-nc.tar.gz",
225- "version": "23.6.0",
226 "description": "QOwnNotesAPI is the Nextcloud/ownCloud API for [QOwnNotes](http://www.qownnotes.org), the open source notepad for Linux, macOS and Windows, that works together with the notes application of Nextcloud/ownCloud.\n\nThe only purpose of this App is to provide API access to your Nextcloud/ownCloud server for your QOwnNotes desktop installation, you cannot use this App for anything else, if you don't have QOwnNotes installed on your desktop computer!",
227 "homepage": "https://github.com/pbek/qownnotesapi",
228 "licenses": [
···270 ]
271 },
272 "twofactor_webauthn": {
273- "sha256": "0z6m2chq5kxc8f10g6n1lh51yi10svy2qp5gp0v8xs71apqcc2wx",
274- "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.3.0/twofactor_webauthn-v1.3.0.tar.gz",
275- "version": "1.3.0",
276 "description": "A two-factor provider for WebAuthn devices",
277 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
278 "licenses": [
···290 ]
291 },
292 "user_saml": {
293- "sha256": "04ivgqdls72p6x5yrh5p5ycbbfmxhzd0dqin1grblm6cbl7b4s2k",
294- "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v5.2.4/user_saml-v5.2.4.tar.gz",
295- "version": "5.2.4",
296 "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.",
297 "homepage": "https://github.com/nextcloud/user_saml",
298 "licenses": [
···1{
2 "bookmarks": {
3+ "sha256": "04yngkmsjq6zj5qih86ybfr2cybqsz3gb5dasm6yhmkvd1ar5s39",
4+ "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.1.2/bookmarks-13.1.2.tar.gz",
5+ "version": "13.1.2",
6 "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7 "homepage": "https://github.com/nextcloud/bookmarks",
8 "licenses": [
···10 ]
11 },
12 "calendar": {
13+ "sha256": "0d6mfqwq44z9kn8nh3zmfzr05zi2rwnw3nhd9wc12dy6npynkcpm",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.6.0/calendar-v4.6.0.tar.gz",
15+ "version": "4.6.0",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23+ "sha256": "0pbl4fmpg1jxwjj141gqnmwzgm3ji1z686kr11rmldfkjvhjss2x",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.5.0/contacts-v5.5.0.tar.gz",
25+ "version": "5.5.0",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···30 ]
31 },
32 "cookbook": {
33+ "sha256": "06d1rhvcwxzi8hl99nz3hg32fznv0q5m06cwjy3gc81j53qz0ksc",
34+ "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.10.5/cookbook-0.10.5.tar.gz",
35+ "version": "0.10.5",
36 "description": "A library for all your recipes. It uses JSON files following the schema.org recipe format. To add a recipe to the collection, you can paste in the URL of the recipe, and the provided web page will be parsed and downloaded to whichever folder you specify in the app settings.",
37+ "homepage": "https://github.com/nextcloud/cookbook/",
38 "licenses": [
39 "agpl"
40 ]
41 },
42 "cospend": {
43+ "sha256": "0v61wdrf4wxjx2xv81599k9k855iyhazxnh4shqvglfb01fi8qhn",
44+ "url": "https://github.com/julien-nc/cospend-nc/releases/download/v1.5.12/cospend-1.5.12.tar.gz",
45+ "version": "1.5.12",
46 "description": "# Nextcloud Cospend 💰\n\nNextcloud Cospend is a group/shared budget manager. It was inspired by the great [IHateMoney](https://github.com/spiral-project/ihatemoney/).\n\nYou can use it when you share a house, when you go on vacation with friends, whenever you share money with others.\n\nIt lets you create projects with members and bills. Each member has a balance computed from the project bills. This way you can see who owes the group and who the group owes. Ultimately you can ask for a settlement plan telling you which payments to make to reset members balances.\n\nProject members are independent from Nextcloud users. Projects can be accessed and modified by people without a Nextcloud account. Each project has an ID and a password for guest access.\n\n[MoneyBuster](https://gitlab.com/eneiluj/moneybuster) Android client is [available in F-Droid](https://f-droid.org/packages/net.eneiluj.moneybuster/) and on the [Play store](https://play.google.com/store/apps/details?id=net.eneiluj.moneybuster).\n\n[PayForMe](https://github.com/mayflower/PayForMe) iOS client is currently being developped!\n\n## Features\n\n* ✎ create/edit/delete projects, members, bills, bill categories, currencies\n* ⚖ check member balances\n* 🗠 display project statistics\n* ♻ display settlement plan\n* 🎇 automatically create reimbursement bills from settlement plan\n* 🗓 create recurring bills (daily/weekly/monthly/yearly)\n* 📊 optionally provide custom amount for each member in new bills\n* 🔗 link bills with personal files (picture of physical bill for example)\n* 👩 guest access for people outside Nextcloud\n* 👫 share projects with Nextcloud users/groups/circles\n* 🖫 import/export projects as csv (compatible with csv files from IHateMoney)\n* 🔗 generate link/QRCode to easily import projects in MoneyBuster\n* 🗲 implement Nextcloud notifications and activity stream\n\nThis app is tested on Nextcloud 20+ with Firefox 57+ and Chromium.\n\nThis app is under development.\n\n🌍 Help us to translate this app on [Nextcloud-Cospend/MoneyBuster Crowdin project](https://crowdin.com/project/moneybuster).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/cospend-nc/blob/master/CONTRIBUTING.md).\n\n## Documentation\n\n* [User documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/user.md)\n* [Admin documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/admin.md)\n* [Developer documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/dev.md)\n* [CHANGELOG](https://github.com/eneiluj/cospend-nc/blob/master/CHANGELOG.md#change-log)\n* [AUTHORS](https://github.com/eneiluj/cospend-nc/blob/master/AUTHORS.md#authors)\n\n## Known issues\n\n* it does not make you rich\n\nAny feedback will be appreciated.\n\n\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
47 "homepage": "https://github.com/julien-nc/cospend-nc",
48 "licenses": [
···50 ]
51 },
52 "deck": {
53+ "sha256": "0ykxfw9v89k4a3g6lbl75d0hwri85kf6jqx1n5v2jxibfr5n4bcp",
54+ "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.11.2/deck-v1.11.2.tar.gz",
55+ "version": "1.11.2",
56 "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
57 "homepage": "https://github.com/nextcloud/deck",
58 "licenses": [
···80 ]
81 },
82 "forms": {
83+ "sha256": "1mipdri1flhkdwknsp72k87y7xfis72bzsnw1alzr1cbp8d6ardm",
84+ "url": "https://github.com/nextcloud-releases/forms/releases/download/v3.4.3/forms-v3.4.3.tar.gz",
85+ "version": "3.4.3",
86 "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
87 "homepage": "https://github.com/nextcloud/forms",
88 "licenses": [
···120 ]
121 },
122 "mail": {
123+ "sha256": "0ycyj5ydnvnf5cjnxkpxd489rymlag8df67n5lawp43cvgg2jn2d",
124+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.5.0/mail-v3.5.0.tar.gz",
125+ "version": "3.5.0",
126 "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/).",
127 "homepage": "https://github.com/nextcloud/mail#readme",
128 "licenses": [
···140 ]
141 },
142 "memories": {
143+ "sha256": "1rz0pkis0vz6hjyj53jbz7dcmd9yxbh1h9p4nhg4a2p7yyd5092m",
144+ "url": "https://github.com/pulsejet/memories/releases/download/v6.1.5/memories.tar.gz",
145+ "version": "6.1.5",
146 "description": "# Memories: Photo Management for Nextcloud\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects, powered by [recognize](https://github.com/nextcloud/recognize) and [facerecognition](https://github.com/matiasdelellis/facerecognition).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Work from any device, of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates and other metadata on photos quickly and in bulk.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Transcode videos and use HLS for maximal performance.\n- **🗺️ Map**: View your photos on a map, tagged with accurate reverse geocoding.\n- **📦 Migration**: Migrate easily from Nextcloud Photos and Google Takeout.\n- **⚡️ Performance**: Do all this very fast.\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store (try a demo [here](https://demo.memories.gallery/apps/memories/)).\n1. Perform the recommended [configuration steps](https://memories.gallery/config/).\n1. Run `php occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
147 "homepage": "https://memories.gallery",
148 "licenses": [
···170 ]
171 },
172 "notes": {
173+ "sha256": "19p5qg94ch72y4lym6s8f6x3dly5v3mm97dx29swnkqplflas3zz",
174+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.9.0/notes-v4.9.0.tar.gz",
175+ "version": "4.9.0",
176 "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.",
177 "homepage": "https://github.com/nextcloud/notes",
178 "licenses": [
···180 ]
181 },
182 "notify_push": {
183+ "sha256": "1by9qw9bsf48cyczhfxpz9ifrg2dayvcn26m309dicqgjqkz91hd",
184+ "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.6/notify_push-v0.6.6.tar.gz",
185+ "version": "0.6.6",
186 "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
187 "homepage": "",
188 "licenses": [
···199 "apache"
200 ]
201 },
202+ "phonetrack": {
203+ "sha256": "1xvdmb2wlcldv8lk4jb8akhi80w26m2jpazfcz641frjm333kxch",
204+ "url": "https://github.com/julien-nc/phonetrack/releases/download/v0.7.7/phonetrack-0.7.7.tar.gz",
205+ "version": "0.7.7",
206+ "description": "# PhoneTrack Nextcloud application\n\n📱 PhoneTrack is a Nextcloud application to track and store mobile device's locations.\n\n🗺 It receives information from mobile phone's logging apps and displays it dynamically on a map.\n\n🌍 Help us to translate this app on [PhoneTrack Crowdin project](https://crowdin.com/project/phonetrack).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CONTRIBUTING.md).\n\nHow to use PhoneTrack :\n\n* Create a tracking session.\n* Give the logging link\\* to the mobile devices. Choose the [logging method](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#logging-methods) you prefer.\n* Watch the session's devices location in real time (or not) in PhoneTrack or share it with public pages.\n\n(\\*) Don't forget to set the device name in the link (rather than in the logging app settings). Replace \"yourname\" with the desired device name. Setting the device name in logging app settings only works with Owntracks, Traccar and OpenGTS.\n\nOn PhoneTrack main page, while watching a session, you can :\n\n* 📍 Display location history\n* ⛛ Filter points\n* ✎ Manually edit/add/delete points\n* ✎ Edit devices (rename, change colour/shape, move to another session)\n* ⛶ Define geofencing zones for devices\n* ⚇ Define proximity alerts for device pairs\n* 🖧 Share a session to other Nextcloud users or with a public link (read-only)\n* 🔗 Generate public share links with optional restrictions (filters, device name, last positions only, geofencing simplification)\n* 🖫 Import/export a session in GPX format (one file with one track per device or one file per device)\n* 🗠 Display sessions statistics\n* 🔒 [Reserve a device name](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#device-name-reservation) to make sure only authorised user can log with this name\n* 🗓 Toggle session auto export and auto purge (daily/weekly/monthly)\n* ◔ Choose what to do when point number quota is reached (block logging or delete oldest point)\n\nPublic page and public filtered page work like main page except there is only one session displayed, everything is read-only and there is no need to be logged in.\n\nThis app is tested on Nextcloud 17 with Firefox 57+ and Chromium.\n\nThis app is compatible with theming colours and accessibility themes !\n\nThis app is under development.\n\n## Install\n\nSee the [AdminDoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc) for installation details.\n\nCheck [CHANGELOG](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CHANGELOG.md#change-log) file to see what's new and what's coming in next release.\n\nCheck [AUTHORS](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/AUTHORS.md#authors) file to see complete list of authors.\n\n## Known issues\n\n* PhoneTrack **now works** with Nextcloud group restriction activated. See [admindoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc#issue-with-phonetrack-restricted-to-some-groups-in-nextcloud).\n\nAny feedback will be appreciated.\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
207+ "homepage": "https://github.com/julien-nc/phonetrack-oc",
208+ "licenses": [
209+ "agpl"
210+ ]
211+ },
212 "polls": {
213 "sha256": "1dmws4ybv3pzxz5g9c7ghblx0nfal2ssmsg7hjcs1n4xcjc6585p",
214 "url": "https://github.com/nextcloud/polls/releases/download/v5.4.2/polls.tar.gz",
···220 ]
221 },
222 "previewgenerator": {
223+ "sha256": "08f0ivxqa2b54w2q4lycb3p5ngqyk92n2qll54pmpj54pfn1sj3m",
224+ "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.4.0/previewgenerator-v5.4.0.tar.gz",
225+ "version": "5.4.0",
226 "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
227 "homepage": "https://github.com/nextcloud/previewgenerator",
228 "licenses": [
···230 ]
231 },
232 "qownnotesapi": {
233+ "sha256": "1pyr4b3w6gsy83ci6cy0wfv870qm2v957nl4w6xk989iyknk4ana",
234+ "url": "https://github.com/pbek/qownnotesapi/releases/download/v23.12.0/qownnotesapi-nc.tar.gz",
235+ "version": "23.12.0",
236 "description": "QOwnNotesAPI is the Nextcloud/ownCloud API for [QOwnNotes](http://www.qownnotes.org), the open source notepad for Linux, macOS and Windows, that works together with the notes application of Nextcloud/ownCloud.\n\nThe only purpose of this App is to provide API access to your Nextcloud/ownCloud server for your QOwnNotes desktop installation, you cannot use this App for anything else, if you don't have QOwnNotes installed on your desktop computer!",
237 "homepage": "https://github.com/pbek/qownnotesapi",
238 "licenses": [
···280 ]
281 },
282 "twofactor_webauthn": {
283+ "sha256": "1p4ng7nprlcgw7sdfd7wqx5az86a856f1v470lahg2nfbx3fg296",
284+ "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.3.2/twofactor_webauthn-v1.3.2.tar.gz",
285+ "version": "1.3.2",
286 "description": "A two-factor provider for WebAuthn devices",
287 "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
288 "licenses": [
···300 ]
301 },
302 "user_saml": {
303+ "sha256": "0q189wkh0nh5y4z9j4bpgn4xnwwn8y8m8y34bp5nbzfz05xpgr9f",
304+ "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v5.2.5/user_saml-v5.2.5.tar.gz",
305+ "version": "5.2.5",
306 "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.",
307 "homepage": "https://github.com/nextcloud/user_saml",
308 "licenses": [
···1+{
2+ "bookmarks": {
3+ "sha256": "04yngkmsjq6zj5qih86ybfr2cybqsz3gb5dasm6yhmkvd1ar5s39",
4+ "url": "https://github.com/nextcloud/bookmarks/releases/download/v13.1.2/bookmarks-13.1.2.tar.gz",
5+ "version": "13.1.2",
6+ "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
7+ "homepage": "https://github.com/nextcloud/bookmarks",
8+ "licenses": [
9+ "agpl"
10+ ]
11+ },
12+ "calendar": {
13+ "sha256": "0d6mfqwq44z9kn8nh3zmfzr05zi2rwnw3nhd9wc12dy6npynkcpm",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.6.0/calendar-v4.6.0.tar.gz",
15+ "version": "4.6.0",
16+ "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17+ "homepage": "https://github.com/nextcloud/calendar/",
18+ "licenses": [
19+ "agpl"
20+ ]
21+ },
22+ "contacts": {
23+ "sha256": "0pbl4fmpg1jxwjj141gqnmwzgm3ji1z686kr11rmldfkjvhjss2x",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.5.0/contacts-v5.5.0.tar.gz",
25+ "version": "5.5.0",
26+ "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27+ "homepage": "https://github.com/nextcloud/contacts#readme",
28+ "licenses": [
29+ "agpl"
30+ ]
31+ },
32+ "cookbook": {
33+ "sha256": "0wd4vwfp4i8hfrlqfzac517iqfhzxy1sv0ryb96489q9fvbcvlnp",
34+ "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.0/cookbook-0.11.0.tar.gz",
35+ "version": "0.11.0",
36+ "description": "A library for all your recipes. It uses JSON files following the schema.org recipe format. To add a recipe to the collection, you can paste in the URL of the recipe, and the provided web page will be parsed and downloaded to whichever folder you specify in the app settings.",
37+ "homepage": "https://github.com/nextcloud/cookbook/",
38+ "licenses": [
39+ "agpl"
40+ ]
41+ },
42+ "cospend": {
43+ "sha256": "0v61wdrf4wxjx2xv81599k9k855iyhazxnh4shqvglfb01fi8qhn",
44+ "url": "https://github.com/julien-nc/cospend-nc/releases/download/v1.5.12/cospend-1.5.12.tar.gz",
45+ "version": "1.5.12",
46+ "description": "# Nextcloud Cospend 💰\n\nNextcloud Cospend is a group/shared budget manager. It was inspired by the great [IHateMoney](https://github.com/spiral-project/ihatemoney/).\n\nYou can use it when you share a house, when you go on vacation with friends, whenever you share money with others.\n\nIt lets you create projects with members and bills. Each member has a balance computed from the project bills. This way you can see who owes the group and who the group owes. Ultimately you can ask for a settlement plan telling you which payments to make to reset members balances.\n\nProject members are independent from Nextcloud users. Projects can be accessed and modified by people without a Nextcloud account. Each project has an ID and a password for guest access.\n\n[MoneyBuster](https://gitlab.com/eneiluj/moneybuster) Android client is [available in F-Droid](https://f-droid.org/packages/net.eneiluj.moneybuster/) and on the [Play store](https://play.google.com/store/apps/details?id=net.eneiluj.moneybuster).\n\n[PayForMe](https://github.com/mayflower/PayForMe) iOS client is currently being developped!\n\n## Features\n\n* ✎ create/edit/delete projects, members, bills, bill categories, currencies\n* ⚖ check member balances\n* 🗠 display project statistics\n* ♻ display settlement plan\n* 🎇 automatically create reimbursement bills from settlement plan\n* 🗓 create recurring bills (daily/weekly/monthly/yearly)\n* 📊 optionally provide custom amount for each member in new bills\n* 🔗 link bills with personal files (picture of physical bill for example)\n* 👩 guest access for people outside Nextcloud\n* 👫 share projects with Nextcloud users/groups/circles\n* 🖫 import/export projects as csv (compatible with csv files from IHateMoney)\n* 🔗 generate link/QRCode to easily import projects in MoneyBuster\n* 🗲 implement Nextcloud notifications and activity stream\n\nThis app is tested on Nextcloud 20+ with Firefox 57+ and Chromium.\n\nThis app is under development.\n\n🌍 Help us to translate this app on [Nextcloud-Cospend/MoneyBuster Crowdin project](https://crowdin.com/project/moneybuster).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/cospend-nc/blob/master/CONTRIBUTING.md).\n\n## Documentation\n\n* [User documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/user.md)\n* [Admin documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/admin.md)\n* [Developer documentation](https://github.com/eneiluj/cospend-nc/blob/master/docs/dev.md)\n* [CHANGELOG](https://github.com/eneiluj/cospend-nc/blob/master/CHANGELOG.md#change-log)\n* [AUTHORS](https://github.com/eneiluj/cospend-nc/blob/master/AUTHORS.md#authors)\n\n## Known issues\n\n* it does not make you rich\n\nAny feedback will be appreciated.\n\n\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
47+ "homepage": "https://github.com/julien-nc/cospend-nc",
48+ "licenses": [
49+ "agpl"
50+ ]
51+ },
52+ "deck": {
53+ "sha256": "0dkw59pv3yj21fs87sw2y4z1qplsgbfnr0nk9cjsb8vb3xjzd0rx",
54+ "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.12.0/deck-v1.12.0.tar.gz",
55+ "version": "1.12.0",
56+ "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
57+ "homepage": "https://github.com/nextcloud/deck",
58+ "licenses": [
59+ "agpl"
60+ ]
61+ },
62+ "forms": {
63+ "sha256": "1ffga26v01d14rh4mjwyjqp7slh7h7d07vs3yldb8csi826ynji4",
64+ "url": "https://github.com/nextcloud-releases/forms/releases/download/v4.0.0/forms-v4.0.0.tar.gz",
65+ "version": "4.0.0",
66+ "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
67+ "homepage": "https://github.com/nextcloud/forms",
68+ "licenses": [
69+ "agpl"
70+ ]
71+ },
72+ "groupfolders": {
73+ "sha256": "024qll51hdsky6iad0acf3c00ny9k9mc303r2v4g4h53qx2gksys",
74+ "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v16.0.1/groupfolders-v16.0.1.tar.gz",
75+ "version": "16.0.1",
76+ "description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.\n\nNote: Encrypting the contents of group folders is currently not supported.",
77+ "homepage": "https://github.com/nextcloud/groupfolders",
78+ "licenses": [
79+ "agpl"
80+ ]
81+ },
82+ "impersonate": {
83+ "sha256": "0l1wmsiycwnn5py1mdc87paqlciclndrk72yf0ff7k11vidgb7mp",
84+ "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.15.0/impersonate-v1.15.0.tar.gz",
85+ "version": "1.15.0",
86+ "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud.\n2. Open users administration interface.\n3. Select the impersonate button on the affected user.\n4. Confirm the impersonation.\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.\n- You can limit which users/groups can use impersonation in Administration settings > Additional settings.",
87+ "homepage": "https://github.com/nextcloud/impersonate",
88+ "licenses": [
89+ "agpl"
90+ ]
91+ },
92+ "mail": {
93+ "sha256": "0ycyj5ydnvnf5cjnxkpxd489rymlag8df67n5lawp43cvgg2jn2d",
94+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v3.5.0/mail-v3.5.0.tar.gz",
95+ "version": "3.5.0",
96+ "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\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/).",
97+ "homepage": "https://github.com/nextcloud/mail#readme",
98+ "licenses": [
99+ "agpl"
100+ ]
101+ },
102+ "maps": {
103+ "sha256": "0rs5cqn2saip7fmj71ww879iqsmmigf0fi6fdbqmdxmrmvsnl9l6",
104+ "url": "https://github.com/nextcloud/maps/releases/download/v1.3.1/maps-1.3.1.tar.gz",
105+ "version": "1.3.1",
106+ "description": "**The whole world fits inside your cloud!**\n\n- **🗺 Beautiful map:** Using [OpenStreetMap](https://www.openstreetmap.org) and [Leaflet](https://leafletjs.com), you can choose between standard map, satellite, topographical, dark mode or even watercolor! 🎨\n- **⭐ Favorites:** Save your favorite places, privately! Sync with [GNOME Maps](https://github.com/nextcloud/maps/issues/30) and mobile apps is planned.\n- **🧭 Routing:** Possible using either [OSRM](http://project-osrm.org), [GraphHopper](https://www.graphhopper.com) or [Mapbox](https://www.mapbox.com).\n- **🖼 Photos on the map:** No more boring slideshows, just show directly where you were!\n- **🙋 Contacts on the map:** See where your friends live and plan your next visit.\n- **📱 Devices:** Lost your phone? Check the map!\n- **〰 Tracks:** Load GPS tracks or past trips. Recording with [PhoneTrack](https://f-droid.org/en/packages/net.eneiluj.nextcloud.phonetrack/) or [OwnTracks](https://owntracks.org) is planned.",
107+ "homepage": "https://github.com/nextcloud/maps",
108+ "licenses": [
109+ "agpl"
110+ ]
111+ },
112+ "notes": {
113+ "sha256": "19p5qg94ch72y4lym6s8f6x3dly5v3mm97dx29swnkqplflas3zz",
114+ "url": "https://github.com/nextcloud-releases/notes/releases/download/v4.9.0/notes-v4.9.0.tar.gz",
115+ "version": "4.9.0",
116+ "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.",
117+ "homepage": "https://github.com/nextcloud/notes",
118+ "licenses": [
119+ "agpl"
120+ ]
121+ },
122+ "notify_push": {
123+ "sha256": "1by9qw9bsf48cyczhfxpz9ifrg2dayvcn26m309dicqgjqkz91hd",
124+ "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.6/notify_push-v0.6.6.tar.gz",
125+ "version": "0.6.6",
126+ "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
127+ "homepage": "",
128+ "licenses": [
129+ "agpl"
130+ ]
131+ },
132+ "onlyoffice": {
133+ "sha256": "14vqyr7yq95kiwkb2q25qa5kxfx0mri12bbyy2fpm94kk2y2km37",
134+ "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.0.0/onlyoffice.tar.gz",
135+ "version": "9.0.0",
136+ "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
137+ "homepage": "https://www.onlyoffice.com",
138+ "licenses": [
139+ "agpl"
140+ ]
141+ },
142+ "phonetrack": {
143+ "sha256": "1xvdmb2wlcldv8lk4jb8akhi80w26m2jpazfcz641frjm333kxch",
144+ "url": "https://github.com/julien-nc/phonetrack/releases/download/v0.7.7/phonetrack-0.7.7.tar.gz",
145+ "version": "0.7.7",
146+ "description": "# PhoneTrack Nextcloud application\n\n📱 PhoneTrack is a Nextcloud application to track and store mobile device's locations.\n\n🗺 It receives information from mobile phone's logging apps and displays it dynamically on a map.\n\n🌍 Help us to translate this app on [PhoneTrack Crowdin project](https://crowdin.com/project/phonetrack).\n\n⚒ Check out other ways to help in the [contribution guidelines](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CONTRIBUTING.md).\n\nHow to use PhoneTrack :\n\n* Create a tracking session.\n* Give the logging link\\* to the mobile devices. Choose the [logging method](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#logging-methods) you prefer.\n* Watch the session's devices location in real time (or not) in PhoneTrack or share it with public pages.\n\n(\\*) Don't forget to set the device name in the link (rather than in the logging app settings). Replace \"yourname\" with the desired device name. Setting the device name in logging app settings only works with Owntracks, Traccar and OpenGTS.\n\nOn PhoneTrack main page, while watching a session, you can :\n\n* 📍 Display location history\n* ⛛ Filter points\n* ✎ Manually edit/add/delete points\n* ✎ Edit devices (rename, change colour/shape, move to another session)\n* ⛶ Define geofencing zones for devices\n* ⚇ Define proximity alerts for device pairs\n* 🖧 Share a session to other Nextcloud users or with a public link (read-only)\n* 🔗 Generate public share links with optional restrictions (filters, device name, last positions only, geofencing simplification)\n* 🖫 Import/export a session in GPX format (one file with one track per device or one file per device)\n* 🗠 Display sessions statistics\n* 🔒 [Reserve a device name](https://gitlab.com/eneiluj/phonetrack-oc/wikis/userdoc#device-name-reservation) to make sure only authorised user can log with this name\n* 🗓 Toggle session auto export and auto purge (daily/weekly/monthly)\n* ◔ Choose what to do when point number quota is reached (block logging or delete oldest point)\n\nPublic page and public filtered page work like main page except there is only one session displayed, everything is read-only and there is no need to be logged in.\n\nThis app is tested on Nextcloud 17 with Firefox 57+ and Chromium.\n\nThis app is compatible with theming colours and accessibility themes !\n\nThis app is under development.\n\n## Install\n\nSee the [AdminDoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc) for installation details.\n\nCheck [CHANGELOG](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/CHANGELOG.md#change-log) file to see what's new and what's coming in next release.\n\nCheck [AUTHORS](https://gitlab.com/eneiluj/phonetrack-oc/blob/master/AUTHORS.md#authors) file to see complete list of authors.\n\n## Known issues\n\n* PhoneTrack **now works** with Nextcloud group restriction activated. See [admindoc](https://gitlab.com/eneiluj/phonetrack-oc/wikis/admindoc#issue-with-phonetrack-restricted-to-some-groups-in-nextcloud).\n\nAny feedback will be appreciated.\n\n## Donation\n\nI develop this app during my free time.\n\n* [Donate with Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66PALMY8SF5JE) (you don't need a paypal account)\n* [Donate with Liberapay : ](https://liberapay.com/eneiluj/donate)",
147+ "homepage": "https://github.com/julien-nc/phonetrack-oc",
148+ "licenses": [
149+ "agpl"
150+ ]
151+ },
152+ "polls": {
153+ "sha256": "1jsxgnn6vvbn1v0x8k2zf95pdqlrg6pxrvn32sms8sfzgq3lbn7m",
154+ "url": "https://github.com/nextcloud/polls/releases/download/v6.0.1/polls.tar.gz",
155+ "version": "6.0.1",
156+ "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
157+ "homepage": "https://github.com/nextcloud/polls",
158+ "licenses": [
159+ "agpl"
160+ ]
161+ },
162+ "previewgenerator": {
163+ "sha256": "08f0ivxqa2b54w2q4lycb3p5ngqyk92n2qll54pmpj54pfn1sj3m",
164+ "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.4.0/previewgenerator-v5.4.0.tar.gz",
165+ "version": "5.4.0",
166+ "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
167+ "homepage": "https://github.com/nextcloud/previewgenerator",
168+ "licenses": [
169+ "agpl"
170+ ]
171+ },
172+ "qownnotesapi": {
173+ "sha256": "1pyr4b3w6gsy83ci6cy0wfv870qm2v957nl4w6xk989iyknk4ana",
174+ "url": "https://github.com/pbek/qownnotesapi/releases/download/v23.12.0/qownnotesapi-nc.tar.gz",
175+ "version": "23.12.0",
176+ "description": "QOwnNotesAPI is the Nextcloud/ownCloud API for [QOwnNotes](http://www.qownnotes.org), the open source notepad for Linux, macOS and Windows, that works together with the notes application of Nextcloud/ownCloud.\n\nThe only purpose of this App is to provide API access to your Nextcloud/ownCloud server for your QOwnNotes desktop installation, you cannot use this App for anything else, if you don't have QOwnNotes installed on your desktop computer!",
177+ "homepage": "https://github.com/pbek/qownnotesapi",
178+ "licenses": [
179+ "agpl"
180+ ]
181+ },
182+ "spreed": {
183+ "sha256": "1aa0pr9r3md04q8anih25kg6b77zfzdf6y8fz2miyfbwd8n6j21p",
184+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v18.0.0/spreed-v18.0.0.tar.gz",
185+ "version": "18.0.0",
186+ "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
187+ "homepage": "https://github.com/nextcloud/spreed",
188+ "licenses": [
189+ "agpl"
190+ ]
191+ },
192+ "tasks": {
193+ "sha256": "0a1wpb9f08iqxl9vjp0slxwzn0w67ilpk21dsi0nhpm28ns2mhyc",
194+ "url": "https://github.com/nextcloud/tasks/releases/download/v0.15.0/tasks.tar.gz",
195+ "version": "0.15.0",
196+ "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.",
197+ "homepage": "https://github.com/nextcloud/tasks/",
198+ "licenses": [
199+ "agpl"
200+ ]
201+ },
202+ "twofactor_nextcloud_notification": {
203+ "sha256": "0gaqgzbryim580dxarak7p4g3wd8wp3w6lw9jhl84jh46wrsbrj8",
204+ "url": "https://github.com/nextcloud-releases/twofactor_nextcloud_notification/releases/download/v3.8.0/twofactor_nextcloud_notification-v3.8.0.tar.gz",
205+ "version": "3.8.0",
206+ "description": "Allows using any of your logged in devices as second factor",
207+ "homepage": "https://github.com/nextcloud/twofactor_nextcloud_notification",
208+ "licenses": [
209+ "agpl"
210+ ]
211+ },
212+ "twofactor_webauthn": {
213+ "sha256": "1p4ng7nprlcgw7sdfd7wqx5az86a856f1v470lahg2nfbx3fg296",
214+ "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v1.3.2/twofactor_webauthn-v1.3.2.tar.gz",
215+ "version": "1.3.2",
216+ "description": "A two-factor provider for WebAuthn devices",
217+ "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
218+ "licenses": [
219+ "agpl"
220+ ]
221+ },
222+ "user_saml": {
223+ "sha256": "0y5l66ig38202mg5zhy6yi72fz8fbsr7410q6qclxivna3gvyzrc",
224+ "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v6.0.1/user_saml-v6.0.1.tar.gz",
225+ "version": "6.0.1",
226+ "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.",
227+ "homepage": "https://github.com/nextcloud/user_saml",
228+ "licenses": [
229+ "agpl"
230+ ]
231+ }
232+}
···4It is being used by [this GitHub Actions workflow](../../../.github/workflows/check-by-name.yml).
5This is part of the implementation of [RFC 140](https://github.com/NixOS/rfcs/pull/140).
67-## API
89-This API may be changed over time if the CI workflow making use of it is adjusted to deal with the change appropriately.
0001011-- Command line: `nixpkgs-check-by-name <NIXPKGS>`
12-- Arguments:
13- - `<NIXPKGS>`: The path to the Nixpkgs to check
14- - `--version <VERSION>`: The version of the checks to perform.
15-16- Possible values:
17- - `v0` (default)
18- - `v1`
19-20- See [validation](#validity-checks) for the differences.
21-- Exit code:
22- - `0`: If the [validation](#validity-checks) is successful
23- - `1`: If the [validation](#validity-checks) is not successful
24- - `2`: If an unexpected I/O error occurs
25-- Standard error:
26- - Informative messages
27- - Detected problems if validation is not successful
2829## Validity checks
30···3233### File structure checks
34- `pkgs/by-name` must only contain subdirectories of the form `${shard}/${name}`, called _package directories_.
35-- The `name`'s of package directories must be unique when lowercased
36- `name` is a string only consisting of the ASCII characters `a-z`, `A-Z`, `0-9`, `-` or `_`.
37- `shard` is the lowercased first two letters of `name`, expressed in Nix: `shard = toLower (substring 0 2 name)`.
38- Each package directory must contain a `package.nix` file and may contain arbitrary other files.
···41- Each package directory must not refer to files outside itself using symlinks or Nix path expressions.
4243### Nix evaluation checks
44-- `pkgs.${name}` is defined as `callPackage pkgs/by-name/${shard}/${name}/package.nix args` for some `args`.
45- - **Only after --version v1**: If `pkgs.${name}` is not auto-called from `pkgs/by-name`, `args` must not be empty
46-- `pkgs.lib.isDerivation pkgs.${name}` is `true`.
0000000000004748## Development
49···85 ```
86 allowing the simulation of package overrides to the real [`pkgs/top-level/all-packages.nix`](../../top-level/all-packages.nix`).
87 The default is an empty overlay.
00008889- `expected` (optional):
90 A file containing the expected standard output.
···4It is being used by [this GitHub Actions workflow](../../../.github/workflows/check-by-name.yml).
5This is part of the implementation of [RFC 140](https://github.com/NixOS/rfcs/pull/140).
67+## Interface
89+The interface of the tool is shown with `--help`:
10+```
11+cargo run -- --help
12+```
1314+The interface may be changed over time only if the CI workflow making use of it is adjusted to deal with the change appropriately.
00000000000000001516## Validity checks
17···1920### File structure checks
21- `pkgs/by-name` must only contain subdirectories of the form `${shard}/${name}`, called _package directories_.
22+- The `name`'s of package directories must be unique when lowercased.
23- `name` is a string only consisting of the ASCII characters `a-z`, `A-Z`, `0-9`, `-` or `_`.
24- `shard` is the lowercased first two letters of `name`, expressed in Nix: `shard = toLower (substring 0 2 name)`.
25- Each package directory must contain a `package.nix` file and may contain arbitrary other files.
···28- Each package directory must not refer to files outside itself using symlinks or Nix path expressions.
2930### Nix evaluation checks
31+- For each package directory, the `pkgs.${name}` attribute must be defined as `callPackage pkgs/by-name/${shard}/${name}/package.nix args` for some `args`.
32+- For each package directory, `pkgs.lib.isDerivation pkgs.${name}` must be `true`.
33+34+### Ratchet checks
35+36+Furthermore, this tool implements certain [ratchet](https://qntm.org/ratchet) checks.
37+This allows gradually phasing out deprecated patterns without breaking the base branch or having to migrate it all at once.
38+It works by not allowing new instances of the pattern to be introduced, but allowing already existing instances.
39+The existing instances are coming from `<BASE_NIXPKGS>`, which is then checked against `<NIXPKGS>` for new instances.
40+Ratchets should be removed eventually once the pattern is not used anymore.
41+42+The current ratchets are:
43+44+- New manual definitions of `pkgs.${name}` (e.g. in `pkgs/top-level/all-packages.nix`) with `args = { }`
45+ (see [nix evaluation checks](#nix-evaluation-checks)) must not be introduced.
4647## Development
48···84 ```
85 allowing the simulation of package overrides to the real [`pkgs/top-level/all-packages.nix`](../../top-level/all-packages.nix`).
86 The default is an empty overlay.
87+88+- `base` (optional):
89+ Contains another subdirectory imitating Nixpkgs with potentially any of the above structures.
90+ This is used for [ratchet checks](#ratchet-checks).
9192- `expected` (optional):
93 A file containing the expected standard output.
+47-34
pkgs/test/nixpkgs-check-by-name/src/eval.rs
···1use crate::nixpkgs_problem::NixpkgsProblem;
02use crate::structure;
3use crate::validation::{self, Validation::Success};
4-use crate::Version;
5use std::path::Path;
67use anyhow::Context;
···39/// of the form `callPackage <package_file> { ... }`.
40/// See the `eval.nix` file for how this is achieved on the Nix side
41pub fn check_values(
42- version: Version,
43 nixpkgs_path: &Path,
44 package_names: Vec<String>,
45- eval_accessible_paths: Vec<&Path>,
46-) -> validation::Result<()> {
47 // Write the list of packages we need to check into a temporary JSON file.
48 // This can then get read by the Nix evaluation.
49 let attrs_file = NamedTempFile::new().context("Failed to create a temporary file")?;
···110 String::from_utf8_lossy(&result.stdout)
111 ))?;
112113- Ok(validation::sequence_(package_names.iter().map(
114- |package_name| {
115- let relative_package_file = structure::relative_file_for_package(package_name);
116 let absolute_package_file = nixpkgs_path.join(&relative_package_file);
117118- if let Some(attribute_info) = actual_files.get(package_name) {
119- let valid = match &attribute_info.variant {
120- AttributeVariant::AutoCalled => true,
000000000000121 AttributeVariant::CallPackage { path, empty_arg } => {
122 let correct_file = if let Some(call_package_path) = path {
123 absolute_package_file == *call_package_path
124 } else {
125 false
126 };
127- // Only check for the argument to be non-empty if the version is V1 or
128- // higher
129- let non_empty = if version >= Version::V1 {
130- !empty_arg
000000131 } else {
132- true
133- };
134- correct_file && non_empty
135- }
136- AttributeVariant::Other => false,
137- };
138-139- if !valid {
140- NixpkgsProblem::WrongCallPackage {
141- relative_package_file: relative_package_file.clone(),
142- package_name: package_name.clone(),
143 }
144- .into()
145- } else if !attribute_info.is_derivation {
146- NixpkgsProblem::NonDerivation {
147 relative_package_file: relative_package_file.clone(),
148 package_name: package_name.clone(),
149 }
150- .into()
151- } else {
152- Success(())
153- }
154 } else {
155 NixpkgsProblem::UndefinedAttr {
156 relative_package_file: relative_package_file.clone(),
···158 }
159 .into()
160 }
161- },
162- )))
000163}
···1use crate::nixpkgs_problem::NixpkgsProblem;
2+use crate::ratchet;
3use crate::structure;
4use crate::validation::{self, Validation::Success};
05use std::path::Path;
67use anyhow::Context;
···39/// of the form `callPackage <package_file> { ... }`.
40/// See the `eval.nix` file for how this is achieved on the Nix side
41pub fn check_values(
042 nixpkgs_path: &Path,
43 package_names: Vec<String>,
44+ eval_accessible_paths: &[&Path],
45+) -> validation::Result<ratchet::Nixpkgs> {
46 // Write the list of packages we need to check into a temporary JSON file.
47 // This can then get read by the Nix evaluation.
48 let attrs_file = NamedTempFile::new().context("Failed to create a temporary file")?;
···109 String::from_utf8_lossy(&result.stdout)
110 ))?;
111112+ Ok(
113+ validation::sequence(package_names.into_iter().map(|package_name| {
114+ let relative_package_file = structure::relative_file_for_package(&package_name);
115 let absolute_package_file = nixpkgs_path.join(&relative_package_file);
116117+ if let Some(attribute_info) = actual_files.get(&package_name) {
118+ let check_result = if !attribute_info.is_derivation {
119+ NixpkgsProblem::NonDerivation {
120+ relative_package_file: relative_package_file.clone(),
121+ package_name: package_name.clone(),
122+ }
123+ .into()
124+ } else {
125+ Success(())
126+ };
127+128+ let check_result = check_result.and(match &attribute_info.variant {
129+ AttributeVariant::AutoCalled => Success(ratchet::Package {
130+ empty_non_auto_called: ratchet::EmptyNonAutoCalled::Valid,
131+ }),
132 AttributeVariant::CallPackage { path, empty_arg } => {
133 let correct_file = if let Some(call_package_path) = path {
134 absolute_package_file == *call_package_path
135 } else {
136 false
137 };
138+139+ if correct_file {
140+ Success(ratchet::Package {
141+ // Empty arguments for non-auto-called packages are not allowed anymore.
142+ empty_non_auto_called: if *empty_arg {
143+ ratchet::EmptyNonAutoCalled::Invalid
144+ } else {
145+ ratchet::EmptyNonAutoCalled::Valid
146+ },
147+ })
148 } else {
149+ NixpkgsProblem::WrongCallPackage {
150+ relative_package_file: relative_package_file.clone(),
151+ package_name: package_name.clone(),
152+ }
153+ .into()
154+ }
00000155 }
156+ AttributeVariant::Other => NixpkgsProblem::WrongCallPackage {
00157 relative_package_file: relative_package_file.clone(),
158 package_name: package_name.clone(),
159 }
160+ .into(),
161+ });
162+163+ check_result.map(|value| (package_name.clone(), value))
164 } else {
165 NixpkgsProblem::UndefinedAttr {
166 relative_package_file: relative_package_file.clone(),
···168 }
169 .into()
170 }
171+ }))
172+ .map(|elems| ratchet::Nixpkgs {
173+ packages: elems.into_iter().collect(),
174+ }),
175+ )
176}
+89-47
pkgs/test/nixpkgs-check-by-name/src/main.rs
···1mod eval;
2mod nixpkgs_problem;
03mod references;
4mod structure;
5mod utils;
···9use crate::validation::Validation::Failure;
10use crate::validation::Validation::Success;
11use anyhow::Context;
12-use clap::{Parser, ValueEnum};
13use colored::Colorize;
14use std::io;
15use std::path::{Path, PathBuf};
16use std::process::ExitCode;
1718/// Program to check the validity of pkgs/by-name
00000000000019#[derive(Parser, Debug)]
20-#[command(about)]
21pub struct Args {
22- /// Path to nixpkgs
023 nixpkgs: PathBuf,
24- /// The version of the checks
25- /// Increasing this may cause failures for a Nixpkgs that succeeded before
26- /// TODO: Remove default once Nixpkgs CI passes this argument
27- #[arg(long, value_enum, default_value_t = Version::V0)]
28- version: Version,
29-}
3031-/// The version of the checks
32-#[derive(Debug, Clone, PartialEq, PartialOrd, ValueEnum)]
33-pub enum Version {
34- /// Initial version
35- V0,
36- /// Empty argument check
37- V1,
38}
3940fn main() -> ExitCode {
41 let args = Args::parse();
42- match check_nixpkgs(&args.nixpkgs, args.version, vec![], &mut io::stderr()) {
43 Ok(true) => {
44 eprintln!("{}", "Validated successfully".green());
45 ExitCode::SUCCESS
···55 }
56}
5758-/// Checks whether the pkgs/by-name structure in Nixpkgs is valid.
59///
60/// # Arguments
61-/// - `nixpkgs_path`: The path to the Nixpkgs to check
062/// - `eval_accessible_paths`:
63/// Extra paths that need to be accessible to evaluate Nixpkgs using `restrict-eval`.
64/// This is used to allow the tests to access the mock-nixpkgs.nix file
···68/// - `Err(e)` if an I/O-related error `e` occurred.
69/// - `Ok(false)` if there are problems, all of which will be written to `error_writer`.
70/// - `Ok(true)` if there are no problems
71-pub fn check_nixpkgs<W: io::Write>(
72- nixpkgs_path: &Path,
73- version: Version,
74- eval_accessible_paths: Vec<&Path>,
75 error_writer: &mut W,
76) -> anyhow::Result<bool> {
77- let nixpkgs_path = nixpkgs_path.canonicalize().context(format!(
78- "Nixpkgs path {} could not be resolved",
79- nixpkgs_path.display()
80- ))?;
81-82- let check_result = if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() {
83- eprintln!(
84- "Given Nixpkgs path does not contain a {} subdirectory, no check necessary.",
85- utils::BASE_SUBPATH
86- );
87- Success(())
88- } else {
89- match check_structure(&nixpkgs_path)? {
90- Failure(errors) => Failure(errors),
91- Success(package_names) =>
92- // Only if we could successfully parse the structure, we do the evaluation checks
93- {
94- eval::check_values(version, &nixpkgs_path, package_names, eval_accessible_paths)?
95- }
96 }
97- };
9899 match check_result {
100 Failure(errors) => {
···103 }
104 Ok(false)
105 }
106- Success(_) => Ok(true),
107 }
108}
1090000000000000000000000000000000110#[cfg(test)]
111mod tests {
112- use crate::check_nixpkgs;
113 use crate::utils;
114- use crate::Version;
115 use anyhow::Context;
116 use std::fs;
117 use std::path::Path;
···197 fn test_nixpkgs(name: &str, path: &Path, expected_errors: &str) -> anyhow::Result<()> {
198 let extra_nix_path = Path::new("tests/mock-nixpkgs.nix");
1990000000200 // We don't want coloring to mess up the tests
201 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> {
202 let mut writer = vec![];
203- check_nixpkgs(&path, Version::V1, vec![&extra_nix_path], &mut writer)
204 .context(format!("Failed test case {name}"))?;
205 Ok(writer)
206 })?;
···1mod eval;
2mod nixpkgs_problem;
3+mod ratchet;
4mod references;
5mod structure;
6mod utils;
···10use crate::validation::Validation::Failure;
11use crate::validation::Validation::Success;
12use anyhow::Context;
13+use clap::Parser;
14use colored::Colorize;
15use std::io;
16use std::path::{Path, PathBuf};
17use std::process::ExitCode;
1819/// Program to check the validity of pkgs/by-name
20+///
21+/// This CLI interface may be changed over time if the CI workflow making use of
22+/// it is adjusted to deal with the change appropriately.
23+///
24+/// Exit code:
25+/// - `0`: If the validation is successful
26+/// - `1`: If the validation is not successful
27+/// - `2`: If an unexpected I/O error occurs
28+///
29+/// Standard error:
30+/// - Informative messages
31+/// - Detected problems if validation is not successful
32#[derive(Parser, Debug)]
33+#[command(about, verbatim_doc_comment)]
34pub struct Args {
35+ /// Path to the main Nixpkgs to check.
36+ /// For PRs, this should be set to a checkout of the PR branch.
37 nixpkgs: PathBuf,
0000003839+ /// Path to the base Nixpkgs to run ratchet checks against.
40+ /// For PRs, this should be set to a checkout of the PRs base branch.
41+ /// If not specified, no ratchet checks will be performed.
42+ /// However, this flag will become required once CI uses it.
43+ #[arg(long)]
44+ base: Option<PathBuf>,
045}
4647fn main() -> ExitCode {
48 let args = Args::parse();
49+ match process(args.base.as_deref(), &args.nixpkgs, &[], &mut io::stderr()) {
50 Ok(true) => {
51 eprintln!("{}", "Validated successfully".green());
52 ExitCode::SUCCESS
···62 }
63}
6465+/// Does the actual work. This is the abstraction used both by `main` and the tests.
66///
67/// # Arguments
68+/// - `base_nixpkgs`: Path to the base Nixpkgs to run ratchet checks against.
69+/// - `main_nixpkgs`: Path to the main Nixpkgs to check.
70/// - `eval_accessible_paths`:
71/// Extra paths that need to be accessible to evaluate Nixpkgs using `restrict-eval`.
72/// This is used to allow the tests to access the mock-nixpkgs.nix file
···76/// - `Err(e)` if an I/O-related error `e` occurred.
77/// - `Ok(false)` if there are problems, all of which will be written to `error_writer`.
78/// - `Ok(true)` if there are no problems
79+pub fn process<W: io::Write>(
80+ base_nixpkgs: Option<&Path>,
81+ main_nixpkgs: &Path,
82+ eval_accessible_paths: &[&Path],
83 error_writer: &mut W,
84) -> anyhow::Result<bool> {
85+ // Check the main Nixpkgs first
86+ let main_result = check_nixpkgs(main_nixpkgs, eval_accessible_paths, error_writer)?;
87+ let check_result = main_result.result_map(|nixpkgs_version| {
88+ // If the main Nixpkgs doesn't have any problems, run the ratchet checks against the base
89+ // Nixpkgs
90+ if let Some(base) = base_nixpkgs {
91+ check_nixpkgs(base, eval_accessible_paths, error_writer)?.result_map(
92+ |base_nixpkgs_version| {
93+ Ok(ratchet::Nixpkgs::compare(
94+ Some(base_nixpkgs_version),
95+ nixpkgs_version,
96+ ))
97+ },
98+ )
99+ } else {
100+ Ok(ratchet::Nixpkgs::compare(None, nixpkgs_version))
000101 }
102+ })?;
103104 match check_result {
105 Failure(errors) => {
···108 }
109 Ok(false)
110 }
111+ Success(()) => Ok(true),
112 }
113}
114115+/// Checks whether the pkgs/by-name structure in Nixpkgs is valid.
116+///
117+/// This does not include ratchet checks, see ../README.md#ratchet-checks
118+/// Instead a `ratchet::Nixpkgs` value is returned, whose `compare` method allows performing the
119+/// ratchet check against another result.
120+pub fn check_nixpkgs<W: io::Write>(
121+ nixpkgs_path: &Path,
122+ eval_accessible_paths: &[&Path],
123+ error_writer: &mut W,
124+) -> validation::Result<ratchet::Nixpkgs> {
125+ Ok({
126+ let nixpkgs_path = nixpkgs_path.canonicalize().context(format!(
127+ "Nixpkgs path {} could not be resolved",
128+ nixpkgs_path.display()
129+ ))?;
130+131+ if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() {
132+ writeln!(
133+ error_writer,
134+ "Given Nixpkgs path does not contain a {} subdirectory, no check necessary.",
135+ utils::BASE_SUBPATH
136+ )?;
137+ Success(ratchet::Nixpkgs::default())
138+ } else {
139+ check_structure(&nixpkgs_path)?.result_map(|package_names|
140+ // Only if we could successfully parse the structure, we do the evaluation checks
141+ eval::check_values(&nixpkgs_path, package_names, eval_accessible_paths))?
142+ }
143+ })
144+}
145+146#[cfg(test)]
147mod tests {
148+ use crate::process;
149 use crate::utils;
0150 use anyhow::Context;
151 use std::fs;
152 use std::path::Path;
···232 fn test_nixpkgs(name: &str, path: &Path, expected_errors: &str) -> anyhow::Result<()> {
233 let extra_nix_path = Path::new("tests/mock-nixpkgs.nix");
234235+ let base_path = path.join("base");
236+ let base_nixpkgs = if base_path.exists() {
237+ Some(base_path.as_path())
238+ } else {
239+ None
240+ };
241+242 // We don't want coloring to mess up the tests
243 let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> {
244 let mut writer = vec![];
245+ process(base_nixpkgs, &path, &[&extra_nix_path], &mut writer)
246 .context(format!("Failed test case {name}"))?;
247 Ok(writer)
248 })?;
···1+//! This module implements the ratchet checks, see ../README.md#ratchet-checks
2+//!
3+//! Each type has a `compare` method that validates the ratchet checks for that item.
4+5+use crate::nixpkgs_problem::NixpkgsProblem;
6+use crate::structure;
7+use crate::validation::{self, Validation, Validation::Success};
8+use std::collections::HashMap;
9+10+/// The ratchet value for the entirety of Nixpkgs.
11+#[derive(Default)]
12+pub struct Nixpkgs {
13+ /// The ratchet values for each package in `pkgs/by-name`
14+ pub packages: HashMap<String, Package>,
15+}
16+17+impl Nixpkgs {
18+ /// Validates the ratchet checks for Nixpkgs
19+ pub fn compare(optional_from: Option<Self>, to: Self) -> Validation<()> {
20+ validation::sequence_(
21+ // We only loop over the current attributes,
22+ // we don't need to check ones that were removed
23+ to.packages.into_iter().map(|(name, attr_to)| {
24+ let attr_from = if let Some(from) = &optional_from {
25+ from.packages.get(&name)
26+ } else {
27+ // This pretends that if there's no base version to compare against, all
28+ // attributes existed without conforming to the new strictness check for
29+ // backwards compatibility.
30+ // TODO: Remove this case. This is only needed because the `--base`
31+ // argument is still optional, which doesn't need to be once CI is updated
32+ // to pass it.
33+ Some(&Package {
34+ empty_non_auto_called: EmptyNonAutoCalled::Invalid,
35+ })
36+ };
37+ Package::compare(&name, attr_from, &attr_to)
38+ }),
39+ )
40+ }
41+}
42+43+/// The ratchet value for a single package in `pkgs/by-name`
44+pub struct Package {
45+ /// The ratchet value for the check for non-auto-called empty arguments
46+ pub empty_non_auto_called: EmptyNonAutoCalled,
47+}
48+49+impl Package {
50+ /// Validates the ratchet checks for a single package defined in `pkgs/by-name`
51+ pub fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> {
52+ EmptyNonAutoCalled::compare(
53+ name,
54+ optional_from.map(|x| &x.empty_non_auto_called),
55+ &to.empty_non_auto_called,
56+ )
57+ }
58+}
59+60+/// The ratchet value of a single package in `pkgs/by-name`
61+/// for the non-auto-called empty argument check of a single.
62+///
63+/// This checks that packages defined in `pkgs/by-name` cannot be overridden
64+/// with an empty second argument like `callPackage ... { }`.
65+#[derive(PartialEq, PartialOrd)]
66+pub enum EmptyNonAutoCalled {
67+ Invalid,
68+ Valid,
69+}
70+71+impl EmptyNonAutoCalled {
72+ /// Validates the non-auto-called empty argument ratchet check for a single package defined in `pkgs/by-name`
73+ fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> {
74+ let from = optional_from.unwrap_or(&Self::Valid);
75+ if to >= from {
76+ Success(())
77+ } else {
78+ NixpkgsProblem::WrongCallPackage {
79+ relative_package_file: structure::relative_file_for_package(name),
80+ package_name: name.to_owned(),
81+ }
82+ .into()
83+ }
84+ }
85+}
···58 Success(value) => Success(f(value)),
59 }
60 }
61+62+ /// Map a `Validation<A>` to a `Result<B>` by applying a function `A -> Result<B>`
63+ /// only if there is a `Success` value
64+ pub fn result_map<B>(self, f: impl FnOnce(A) -> Result<B>) -> Result<B> {
65+ match self {
66+ Failure(err) => Ok(Failure(err)),
67+ Success(value) => f(value),
68+ }
69+ }
70}
7172impl Validation<()> {
···1+# This expression will, as efficiently as possible, dump a
2+# *superset* of all attrpaths of derivations which might be
3+# part of a release on *any* platform.
4+#
5+# Both this expression and what ofborg uses (release-outpaths.nix)
6+# are essentially single-threaded (under the current cppnix
7+# implementation).
8+#
9+# This expression runs much, much, much faster and uses much, much
10+# less memory than the ofborg script by skipping the
11+# platform-relevance checks. The ofborg outpaths.nix script takes
12+# half an hour on a 3ghz core and peaks at 60gbytes of memory; this
13+# expression runs on the same machine in 44 seconds with peak memory
14+# usage of 5gbytes.
15+#
16+# Once you have the list of attrnames you can split it up into
17+# $NUM_CORES batches and run the platform checks separately for each
18+# batch, in parallel.
19+#
20+# To dump the attrnames:
21+#
22+# nix-instantiate --eval --strict --json pkgs/top-level/release-attrpaths-superset.nix -A names
23+#
24+{ lib ? import (path + "/lib")
25+, trace ? false
26+, enableWarnings ? true
27+, checkMeta ? true
28+, path ? ./../..
29+}:
30+let
31+32+ # No release package attrpath may have any of these attrnames as
33+ # its initial component.
34+ #
35+ # If you can find a way to remove any of these entries without
36+ # causing CI to fail, please do so.
37+ #
38+ excluded-toplevel-attrs = {
39+ # spliced packagesets
40+ __splicedPackages = true;
41+ pkgsBuildBuild = true;
42+ pkgsBuildHost = true;
43+ pkgsBuildTarget = true;
44+ pkgsHostHost = true;
45+ pkgsHostTarget = true;
46+ pkgsTargetTarget = true;
47+ buildPackages = true;
48+ targetPackages = true;
49+50+ # cross packagesets
51+ pkgsLLVM = true;
52+ pkgsMusl = true;
53+ pkgsStatic = true;
54+ pkgsCross = true;
55+ pkgsi686Linux = true;
56+ };
57+58+ # No release package attrname may have any of these at a component
59+ # anywhere in its attrpath. These are the names of gigantic
60+ # top-level attrsets that have leaked into so many sub-packagesets
61+ # that it's easier to simply exclude them entirely.
62+ #
63+ # If you can find a way to remove any of these entries without
64+ # causing CI to fail, please do so.
65+ #
66+ excluded-attrnames-at-any-depth = {
67+ lib = true;
68+ override = true;
69+ __functor = true;
70+ __functionArgs = true;
71+ newScope = true;
72+ scope = true;
73+ pkgs = true;
74+75+ buildHaskellPackages = true;
76+ buildPackages = true;
77+ generateOptparseApplicativeCompletions = true;
78+79+ callPackage = true;
80+ mkDerivation = true;
81+ overrideDerivation = true;
82+ overrideScope = true;
83+ overrideScope' = true;
84+85+ # Special case: lib/types.nix leaks into a lot of nixos-related
86+ # derivations, and does not eval deeply.
87+ type = true;
88+ };
89+90+ # __attrsFailEvaluation is a temporary workaround to get top-level
91+ # eval to succeed (under builtins.tryEval) for the entire
92+ # packageset, without deep invasve changes into individual
93+ # packages.
94+ #
95+ # Now that CI has been added, ensuring that top-level eval will
96+ # not be broken by any new commits, you should not add any new
97+ # occurrences of __attrsFailEvaluation, and should remove them
98+ # wherever you are able to (doing so will likely require deep
99+ # adjustments within packages). Once all of the uses of
100+ # __attrsFailEvaluation are removed, it will be deleted from the
101+ # routine below. In the meantime,
102+ #
103+ # The intended semantics are that an attrpath rooted at pkgs is
104+ # part of the (unfiltered) release jobset iff all of the following
105+ # are true:
106+ #
107+ # 1. The first component of the attrpath is not in
108+ # `excluded-toplevel-attrs`
109+ #
110+ # 2. No attrname in the attrpath belongs to the list of forbidden
111+ # attrnames `excluded-attrnames-at-any-depth`
112+ #
113+ # 3. The attrpath leads to a value for which lib.isDerivation is true
114+ #
115+ # 4. No proper prefix of the attrpath has __attrsFailEvaluation=true
116+ #
117+ # 5. Any proper prefix of the attrpath at which lib.isDerivation
118+ # is true also has __recurseIntoDerivationForReleaseJobs=true.
119+ #
120+ # The last condition is unfortunately necessary because there are
121+ # Hydra release jobnames which have proper prefixes which are
122+ # attrnames of derivations (!). We should probably restructure
123+ # the job tree so that this is not the case.
124+ #
125+ justAttrNames = path: value:
126+ let
127+ attempt =
128+ if lib.isDerivation value &&
129+ # in some places we have *derivations* with jobsets as subattributes, ugh
130+ !(value.__recurseIntoDerivationForReleaseJobs or false) then
131+ [ path ]
132+133+ # Even wackier case: we have meta.broken==true jobs with
134+ # !meta.broken jobs as subattributes with license=unfree, and
135+ # check-meta.nix won't throw an "unfree" failure because the
136+ # enclosing derivation is marked broken. Yeah. Bonkers.
137+ # We should just forbid jobsets enclosed by derivations.
138+ else if lib.isDerivation value &&
139+ !value.meta.available then []
140+141+ else if !(lib.isAttrs value) then []
142+ else if (value.__attrsFailEvaluation or false) then []
143+ else lib.pipe value [
144+ (builtins.mapAttrs
145+ (name: value:
146+ if excluded-attrnames-at-any-depth.${name} or false then [] else
147+ (justAttrNames (path ++ [name]) value)))
148+ builtins.attrValues
149+ builtins.concatLists
150+ ];
151+152+ seq = builtins.deepSeq attempt attempt;
153+ tried = builtins.tryEval seq;
154+155+ result =
156+ if tried.success
157+ then tried.value
158+ else if enableWarnings && path != [ "AAAAAASomeThingsFailToEvaluate" ]
159+ then lib.warn "tryEval failed at: ${lib.concatStringsSep "." path}" []
160+ else [];
161+ in
162+ if !trace
163+ then result
164+ else lib.trace "** ${lib.concatStringsSep "." path}" result;
165+166+ unfiltered = import ./release-outpaths.nix {
167+ inherit checkMeta;
168+ attrNamesOnly = true;
169+ inherit path;
170+ };
171+172+ filtered = lib.pipe unfiltered [
173+ (pkgs: builtins.removeAttrs pkgs (builtins.attrNames excluded-toplevel-attrs))
174+ ];
175+176+ paths =
177+ [
178+ # I am not entirely sure why these three packages end up in
179+ # the Hydra jobset. But they do, and they don't meet the
180+ # criteria above, so at the moment they are special-cased.
181+ [ "pkgsLLVM" "stdenv" ]
182+ [ "pkgsStatic" "stdenv" ]
183+ [ "pkgsMusl" "stdenv" ]
184+ ] ++ justAttrNames [] filtered;
185+186+ names =
187+ map (path: (lib.concatStringsSep "." path)) paths;
188+189+in
190+{
191+ inherit paths names;
192+}
···1+#!/usr/bin/env nix-shell
2+# When using as a callable script, passing `--argstr path some/path` overrides $PWD.
3+#!nix-shell -p nix -i "nix-env -qaP --no-name --out-path --arg checkMeta true -f pkgs/top-level/release-outpaths.nix"
4+5+# Vendored from:
6+# https://raw.githubusercontent.com/NixOS/ofborg/74f38efa7ef6f0e8e71ec3bfc675ae4fb57d7491/ofborg/src/outpaths.nix
7+{ checkMeta
8+, includeBroken ? true # set this to false to exclude meta.broken packages from the output
9+, path ? ./../..
10+11+# used by pkgs/top-level/release-attrnames-superset.nix
12+, attrNamesOnly ? false
13+14+# Set this to `null` to build for builtins.currentSystem only
15+, systems ? [
16+ "aarch64-linux"
17+ "aarch64-darwin"
18+ #"i686-linux" # !!!
19+ "x86_64-linux"
20+ "x86_64-darwin"
21+ ]
22+}:
23+let
24+ lib = import (path + "/lib");
25+ hydraJobs = import (path + "/pkgs/top-level/release.nix")
26+ # Compromise: accuracy vs. resources needed for evaluation.
27+ {
28+ inherit attrNamesOnly;
29+ supportedSystems =
30+ if systems == null
31+ then [ builtins.currentSystem ]
32+ else systems;
33+ nixpkgsArgs = {
34+ config = {
35+ allowAliases = false;
36+ allowBroken = includeBroken;
37+ allowUnfree = false;
38+ allowInsecurePredicate = x: true;
39+ checkMeta = checkMeta;
40+41+ handleEvalIssue = reason: errormsg:
42+ let
43+ fatalErrors = [
44+ "unknown-meta"
45+ "broken-outputs"
46+ ];
47+ in
48+ if builtins.elem reason fatalErrors
49+ then abort errormsg
50+ # hydra does not build unfree packages, so tons of them are broken yet not marked meta.broken.
51+ else if !includeBroken && builtins.elem reason [ "broken" "unfree" ]
52+ then throw "broken"
53+ else if builtins.elem reason [ "unsupported" ]
54+ then throw "unsupported"
55+ else true;
56+57+ inHydra = true;
58+ };
59+ };
60+ };
61+ recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
62+63+ # hydraJobs leaves recurseForDerivations as empty attrmaps;
64+ # that would break nix-env and we also need to recurse everywhere.
65+ tweak = lib.mapAttrs
66+ (name: val:
67+ if name == "recurseForDerivations" then true
68+ else if lib.isAttrs val && val.type or null != "derivation"
69+ then recurseIntoAttrs (tweak val)
70+ else val
71+ );
72+73+ # Some of these contain explicit references to platform(s) we want to avoid;
74+ # some even (transitively) depend on ~/.nixpkgs/config.nix (!)
75+ blacklist = [
76+ "tarball"
77+ "metrics"
78+ "manual"
79+ "darwin-tested"
80+ "unstable"
81+ "stdenvBootstrapTools"
82+ "moduleSystem"
83+ "lib-tests" # these just confuse the output
84+ ];
85+86+in
87+tweak (builtins.removeAttrs hydraJobs blacklist)
+1-1
pkgs/top-level/release-python.nix
···29 let res = builtins.tryEval (
30 if isDerivation value then
31 value.meta.isBuildPythonPackage or []
32- else if value.recurseForDerivations or false || value.recurseForRelease or false then
33 packagePython value
34 else
35 []);
···29 let res = builtins.tryEval (
30 if isDerivation value then
31 value.meta.isBuildPythonPackage or []
32+ else if value.recurseForDerivations or false || value.recurseForRelease or false || value.__recurseIntoDerivationForReleaseJobs or false then
33 packagePython value
34 else
35 []);
+27-5
pkgs/top-level/release.nix
···37 "openssl-1.1.1w"
38 ];
39 }; }
000000000000040}:
4142-with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
04344let
45···239 # 'nonPackageAttrs' and jobs pulled in from 'pkgs'.
240 # Conflicts usually cause silent job drops like in
241 # https://github.com/NixOS/nixpkgs/pull/182058
242- jobs = lib.attrsets.unionOfDisjoint
243- nonPackageJobs
244- (mapTestOn ((packagePlatforms pkgs) // {
245 haskell.compiler = packagePlatforms pkgs.haskell.compiler;
246 haskellPackages = packagePlatforms pkgs.haskellPackages;
247 # Build selected packages (HLS) for multiple Haskell compilers to rebuild
···275 darwin = packagePlatforms pkgs.darwin // {
276 xcode = {};
277 };
278- } ));
00000000279280in jobs
···37 "openssl-1.1.1w"
38 ];
39 }; }
40+41+ # This flag, if set to true, will inhibit the use of `mapTestOn`
42+ # and `release-lib.packagePlatforms`. Generally, it causes the
43+ # resulting tree of attributes to *not* have a ".${system}"
44+ # suffixed upon every job name like Hydra expects.
45+ #
46+ # This flag exists mainly for use by
47+ # pkgs/top-level/release-attrnames-superset.nix; see that file for
48+ # full details. The exact behavior of this flag may change; it
49+ # should be considered an internal implementation detail of
50+ # pkgs/top-level/.
51+ #
52+, attrNamesOnly ? false
53}:
5455+let release-lib = import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; }; in
56+with release-lib;
5758let
59···253 # 'nonPackageAttrs' and jobs pulled in from 'pkgs'.
254 # Conflicts usually cause silent job drops like in
255 # https://github.com/NixOS/nixpkgs/pull/182058
256+ jobs = let
257+ packagePlatforms = if attrNamesOnly then lib.id else release-lib.packagePlatforms;
258+ packageJobs = {
259 haskell.compiler = packagePlatforms pkgs.haskell.compiler;
260 haskellPackages = packagePlatforms pkgs.haskellPackages;
261 # Build selected packages (HLS) for multiple Haskell compilers to rebuild
···289 darwin = packagePlatforms pkgs.darwin // {
290 xcode = {};
291 };
292+ };
293+ mapTestOn-packages =
294+ if attrNamesOnly
295+ then pkgs // packageJobs
296+ else mapTestOn ((packagePlatforms pkgs) // packageJobs);
297+ in
298+ lib.attrsets.unionOfDisjoint
299+ nonPackageJobs
300+ mapTestOn-packages;
301302in jobs