]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Bump Nextcloud to latest version
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Sat, 4 Dec 2021 21:43:26 +0000 (22:43 +0100)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 9 Apr 2023 15:16:13 +0000 (17:16 +0200)
42 files changed:
DOCUMENTATION.md
modules/private/system/quatresaisons/nextcloud.nix
modules/private/websites/bakeer/cloud.nix
modules/private/websites/patrick_fodella/altermondia.nix
modules/private/websites/ressourcerie_banon/cloud.nix
modules/private/websites/tools/cloud/default.nix
modules/private/websites/tools/cloud/farm.nix
pkgs/webapps/default.nix
pkgs/webapps/nextcloud/apps/apporder.nix
pkgs/webapps/nextcloud/apps/audioplayer.nix
pkgs/webapps/nextcloud/apps/bookmarks.nix
pkgs/webapps/nextcloud/apps/calendar.nix
pkgs/webapps/nextcloud/apps/carnet.nix
pkgs/webapps/nextcloud/apps/circles.nix
pkgs/webapps/nextcloud/apps/contacts.nix
pkgs/webapps/nextcloud/apps/cookbook.nix
pkgs/webapps/nextcloud/apps/deck.nix
pkgs/webapps/nextcloud/apps/drawio.nix [new file with mode: 0644]
pkgs/webapps/nextcloud/apps/external.nix [new file with mode: 0644]
pkgs/webapps/nextcloud/apps/extract.nix
pkgs/webapps/nextcloud/apps/files_markdown.nix
pkgs/webapps/nextcloud/apps/files_mindmap.nix
pkgs/webapps/nextcloud/apps/files_readmemd.nix
pkgs/webapps/nextcloud/apps/flowupload.nix
pkgs/webapps/nextcloud/apps/gpxedit.nix
pkgs/webapps/nextcloud/apps/gpxpod.nix
pkgs/webapps/nextcloud/apps/groupfolders.nix [new file with mode: 0644]
pkgs/webapps/nextcloud/apps/impersonate.nix
pkgs/webapps/nextcloud/apps/keeweb.nix
pkgs/webapps/nextcloud/apps/maps.nix
pkgs/webapps/nextcloud/apps/metadata.nix
pkgs/webapps/nextcloud/apps/music.nix
pkgs/webapps/nextcloud/apps/notes.nix
pkgs/webapps/nextcloud/apps/ocsms.nix
pkgs/webapps/nextcloud/apps/onlyoffice.nix [new file with mode: 0644]
pkgs/webapps/nextcloud/apps/passman.nix
pkgs/webapps/nextcloud/apps/polls.nix
pkgs/webapps/nextcloud/apps/social.nix
pkgs/webapps/nextcloud/apps/spreed.nix
pkgs/webapps/nextcloud/apps/talk_matterbridge.nix [new file with mode: 0644]
pkgs/webapps/nextcloud/apps/tasks.nix
pkgs/webapps/nextcloud/default.nix

index 6c68680bf891a1eaab93b482da3715fa59b7cf0f..25006ce2842e2ac2c10684275cb3cbe45bb6a89e 100644 (file)
@@ -236,6 +236,10 @@ Nextcloud
 ---------
 
 - Do not skip major versions!
+- Update all the apps: check on https://apps.nextcloud.com/ and build with
+  ```
+  nix-build -E "with import <nixpkgs> {};webapps.nextcloud.withApps (a: builtins.attrValues webapps.nextcloud.allApps)"
+  ```
 - Put nextcloud in maintenance mode :
   ```
   nextcloud-occ maintenance:mode --on
index 89d69d5f0fe5f686d58df1829289d0a15d428cc5..2f6aafd8a2aa26721a2d0433f4ba84599b2ce1e9 100644 (file)
@@ -1,12 +1,10 @@
 { lib, pkgs, config,  ... }:
 let
-  nextcloud = pkgs.webapps.nextcloud.withApps (a: [
-    a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.circles
-    a.contacts a.cookbook a.deck a.extract a.files_markdown
-    a.files_readmemd a.flowupload a.gpxedit a.gpxpod a.keeweb a.maps
-    a.metadata a.music a.notes a.ocsms a.passman a.polls a.spreed
-    a.social a.tasks
-  ]);
+  phpPackage = (pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick ])).override { extraConfig = ''
+    apc.enable_cli = 1
+    '';
+  };
+  nextcloud = pkgs.webapps.nextcloud_22.withApps (a: [ a.calendar a.contacts ]);
   varDir = "/var/lib/nextcloud";
   phpFpm = rec {
     basedir = builtins.concatStringsSep ":" ([ nextcloud varDir ] ++ nextcloud.apps);
@@ -95,8 +93,8 @@ in {
         cd ${nextcloud}
         NEXTCLOUD_CONFIG_DIR="${nextcloud}/config" \
           exec \
-          sudo -E -u wwwrun ${pkgs.php74}/bin/php \
-          -c ${pkgs.php74}/etc/php.ini \
+          sudo -E -u wwwrun ${phpPackage}/bin/php \
+          -c ${phpPackage}/etc/php.ini \
           occ $*
         '';
     in [ occ ];
@@ -119,7 +117,7 @@ in {
       user = "wwwrun";
       group = "wwwrun";
       settings = phpFpm.pool;
-      phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick ]);
+      inherit phpPackage;
     };
 
     services.cron = {
@@ -129,7 +127,7 @@ in {
           #! ${pkgs.stdenv.shell}
           export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
           export PATH=/run/wrappers/bin:$PATH
-          ${pkgs.php74}/bin/php -d memory_limit=512M -f ${nextcloud}/cron.php
+          ${phpPackage}/bin/php -d memory_limit=512M -f ${nextcloud}/cron.php
           '';
       in [
         ''
index bf78317ff9b37b47a119d450db03163940707128..554ffd46f1d8748143e503dfe5b330c0dffc0c0d 100644 (file)
@@ -1,19 +1,21 @@
 { lib, pkgs, config,  ... }:
 let
   cfg = config.myServices.websites.bakeer.cloud;
-  nextcloud = config.myServices.tools.cloud.farm.package;
 in {
   options.myServices.websites.bakeer.cloud.enable = lib.mkEnableOption "enable Bakeer’s cloud";
 
   config = lib.mkIf cfg.enable {
-    myServices.tools.cloud.farm.instances = [ "bakeer" ];
+    myServices.tools.cloud.farm.instances.bakeer = {
+      nextcloud = pkgs.webapps.nextcloud_22;
+      apps = a: [ a.impersonate ];
+    };
     services.websites.env.production.modules = [ "proxy_fcgi" ];
     services.websites.env.production.vhostConfs.bakeer = {
       certName     = "bakeer";
       certMainHost = "bakeer.immae.eu";
       addToCerts   = true;
       hosts        = ["bakeer.immae.eu" "baxsolution.immae.eu"];
-      root         = nextcloud;
+      root         = config.myServices.tools.cloud.farm.rootDirs.bakeer;
       extraConfig  = [
         config.myServices.tools.cloud.farm.vhosts.bakeer
       ];
index 2a41aa365ee7673aa892a59a8060d1cd6bbf21a5..84886e039f4a65e04a4b461c439d948058ab2ffd 100644 (file)
@@ -4,6 +4,8 @@ let
   varDir = "/var/lib/ftp/patrick_fodella/altermondia";
   apacheUser = config.services.httpd.Prod.user;
   apacheGroup = config.services.httpd.Prod.group;
+  binEnvPaths = [ pkgs.zip ];
+  binEnv = pkgs.buildEnv { paths = binEnvPaths; name = "bin-env";};
 in {
   options.myServices.websites.patrick_fodella.altermondia.enable = lib.mkEnableOption "enable Patrick Fodella Altermondia's website";
 
@@ -25,11 +27,14 @@ in {
         "listen.owner" = apacheUser;
         "listen.group" = apacheGroup;
 
-        "pm" = "ondemand";
-        "pm.max_children" = "5";
-        "pm.process_idle_timeout" = "60";
+        "pm" = "dynamic";
+        "pm.max_children" = "20";
+        "pm.start_servers" = "2";
+        "pm.min_spare_servers" = "1";
+        "pm.max_spare_servers" = "3";
 
-        "php_admin_value[open_basedir]" = "/var/lib/php/sessions/patrick_fodella_altermondia:${varDir}:/tmp";
+        "env[BIN_ENV]" = "${binEnv}/bin";
+        "php_admin_value[open_basedir]" = "${binEnv}:${builtins.concatStringsSep ":" binEnvPaths}:/var/lib/php/sessions/patrick_fodella_altermondia:${varDir}:/tmp";
         "php_admin_value[session.save_path]" = "/var/lib/php/sessions/patrick_fodella_altermondia";
       };
       phpOptions = config.services.phpfpm.phpOptions + ''
index 51792182ab3c213959c359984c3058cea7a9612c..5ddd95273a57f75b9fbdfac517cd969f4d5e8937 100644 (file)
@@ -1,18 +1,20 @@
 { lib, pkgs, config,  ... }:
 let
   cfg = config.myServices.websites.ressourcerie_banon.cloud;
-  nextcloud = config.myServices.tools.cloud.farm.package;
 in {
   options.myServices.websites.ressourcerie_banon.cloud.enable = lib.mkEnableOption "enable Ressourcerie Banon’s cloud";
 
   config = lib.mkIf cfg.enable {
-    myServices.tools.cloud.farm.instances = [ "ressourcerie_banon" ];
+    myServices.tools.cloud.farm.instances.ressourcerie_banon = {
+      nextcloud = pkgs.webapps.nextcloud_22;
+      apps = a: [ a.calendar ];
+    };
     services.websites.env.production.modules = [ "proxy_fcgi" ];
     services.websites.env.production.vhostConfs.ressourcerie_banon_cloud = {
       certName     = "ressourcerie_banon";
       addToCerts   = true;
       hosts        = ["cloud.le-garage-autonome.org"];
-      root         = nextcloud;
+      root         = config.myServices.tools.cloud.farm.rootDirs.ressourcerie_banon;
       extraConfig  = [ config.myServices.tools.cloud.farm.vhosts.ressourcerie_banon ];
     };
   };
index 134d1bcded9f52782de2fb5f548bc0b8f6bf9942..a09b629e338d874070118e92396122e775a8d377 100644 (file)
@@ -1,10 +1,14 @@
 { lib, pkgs, config,  ... }:
 let
-  nextcloud = pkgs.webapps.nextcloud.withApps (a: [
+  phpPackage = (pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick ])).override { extraConfig = ''
+    apc.enable_cli = 1
+    '';
+  };
+  nextcloud = pkgs.webapps.nextcloud_22.withApps (a: [
     a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.contacts
     a.cookbook a.deck a.extract a.files_markdown a.files_readmemd a.files_mindmap
     a.flowupload a.gpxedit a.gpxpod a.keeweb a.maps a.metadata a.music
-    a.notes a.ocsms a.passman a.polls a.spreed a.tasks
+    a.notes a.passman a.polls a.spreed a.tasks
   ]);
   env = config.myEnv.tools.nextcloud;
   varDir = "/var/lib/nextcloud";
@@ -14,8 +18,11 @@ let
     pool = {
       "listen.owner" = "wwwrun";
       "listen.group" = "wwwrun";
-      "pm" = "ondemand";
+      "pm" = "dynamic";
       "pm.max_children" = "60";
+      "pm.start_servers" = "2";
+      "pm.min_spare_servers" = "2";
+      "pm.max_spare_servers" = "3";
       "pm.process_idle_timeout" = "60";
 
       "php_admin_value[output_buffering]" = "0";
@@ -97,6 +104,9 @@ in {
           'allowZipDownload' => true,
           'forcessl' => true,
           'theme' => ${"''"},
+          'remember_login_cookie_lifetime' => 60*60*24*30,
+          'session_keepalive' => true,
+          'session_lifefime' => 60*60*24*30,
           'maintenance' => false,
           'trusted_domains' => 
           array (
@@ -137,8 +147,8 @@ in {
         cd ${nextcloud}
         NEXTCLOUD_CONFIG_DIR="${nextcloud}/config" \
           exec \
-          sudo -E -u wwwrun ${pkgs.php74}/bin/php \
-          -c ${pkgs.php74}/etc/php.ini \
+          sudo -E -u wwwrun ${phpPackage}/bin/php \
+          -c ${phpPackage}/etc/php.ini \
           occ $*
         '';
     in [ occ ];
@@ -162,7 +172,7 @@ in {
       user = "wwwrun";
       group = "wwwrun";
       settings = phpFpm.pool;
-      phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache ]);
+      inherit phpPackage;
     };
 
     services.cron = {
@@ -172,7 +182,7 @@ in {
           #! ${pkgs.stdenv.shell}
           export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
           export PATH=/run/wrappers/bin:$PATH
-          ${pkgs.php74}/bin/php -d memory_limit=2048M -f ${nextcloud}/cron.php
+          ${phpPackage}/bin/php -d memory_limit=2048M -f ${nextcloud}/cron.php
           '';
       in [
         ''
index 7be774c94e95a52bf459c5169787a013d6bbece1..de1cfaecb1056cdf5c62391c2dfa6e5a2bbf9889 100644 (file)
@@ -3,20 +3,14 @@ let
   cfg = config.myServices.tools.cloud.farm;
   apacheUser = config.services.httpd.Prod.user;
   apacheGroup = config.services.httpd.Prod.group;
-  nextcloud = (pkgs.webapps.nextcloud.override { varDir = null; }).withApps (a: [
-    a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.contacts
-    a.cookbook a.deck a.extract a.files_markdown a.files_readmemd
-    a.flowupload a.gpxedit a.gpxpod a.impersonate a.keeweb a.maps
-    a.metadata a.music a.notes a.ocsms a.passman a.polls a.spreed
-    a.tasks
-  ]);
   toVardir = name: "/var/lib/nextcloud_farm/${name}";
-  varDirs = map toVardir cfg.instances;
-  phpBaseDir = builtins.concatStringsSep ":" ([ nextcloud ] ++ varDirs ++ nextcloud.apps);
+  varDirs = lib.mapAttrsToList (name: v: toVardir name) cfg.instances;
+  toPhpBaseDir = name: [ cfg.rootDirs."${name}" (toVardir name) ] ++ cfg.rootDirs."${name}".apps;
+  phpBaseDir = builtins.concatStringsSep ":" (lib.unique (lib.flatten (lib.mapAttrsToList (name: v: toPhpBaseDir name) cfg.instances)));
   toVhost = name: ''
     SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
     SetEnv NEXTCLOUD_CONFIG_DIR "${toVardir name}"
-    <Directory ${nextcloud}>
+    <Directory ${cfg.rootDirs."${name}"}>
       AcceptPathInfo On
       DirectoryIndex index.php
       Options FollowSymlinks
@@ -33,29 +27,47 @@ let
 
     </Directory>
     '';
+  phpPackage = (pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick ])).override { extraConfig = ''
+    apc.enable_cli = 1
+    '';
+  };
 in
 {
   options.myServices.tools.cloud.farm = {
     instances = lib.mkOption {
       description = "Instances names for the nextcloud Farm";
-      default = [];
-      type = lib.types.listOf lib.types.str;
+      default = {};
+      type = lib.types.attrsOf (lib.types.submodule {
+        options = {
+          nextcloud = lib.mkOption {
+            description = "Nextcloud version to use";
+            default = pkgs.webapps.nextcloud_20;
+            type = lib.types.package;
+          };
+          apps = lib.mkOption {
+            description = "Applications to use";
+            default = a: [];
+            #type = functionTo (listOf packages)
+            type = lib.types.unspecified;
+          };
+        };
+      });
+    };
+    rootDirs = lib.mkOption {
+      description = "Instance root dirs";
+      readOnly = true;
+      type = lib.types.attrsOf lib.types.package;
+      default = lib.mapAttrs (name: v: (v.nextcloud.override { varDir = null; }).withApps v.apps) cfg.instances;
     };
     vhosts = lib.mkOption {
       description = "Instance vhosts configs";
       readOnly = true;
       type = lib.types.attrsOf lib.types.str;
-      default = lib.genAttrs cfg.instances toVhost;
-    };
-    package = lib.mkOption {
-      description = "Nextcloud derivation";
-      readOnly = true;
-      type = lib.types.package;
-      default = nextcloud;
+      default = lib.mapAttrs (name: v: toVhost name) cfg.instances;
     };
   };
 
-  config = lib.mkIf (builtins.length cfg.instances > 0) {
+  config = lib.mkIf (builtins.length (builtins.attrNames cfg.instances) > 0) {
     system.activationScripts.cloud_farm_vardirs = {
       deps = [ "httpd" ];
       text = ''
@@ -68,16 +80,23 @@ in
     services.phpfpm.pools.nextcloud_farm = {
       user = apacheUser;
       group = apacheGroup;
-      settings = {
+      settings = let
+        instanceNb = builtins.length (builtins.attrNames cfg.instances);
+      in {
         "listen.owner" = apacheUser;
         "listen.group" = apacheGroup;
-        "pm" = "ondemand";
-        "pm.max_children" = "60";
+        "pm" = "dynamic";
+        "pm.max_children" = builtins.toString (60 * instanceNb);
+        "pm.start_servers" = builtins.toString (3 * instanceNb);
+        "pm.min_spare_servers" = builtins.toString (3 * instanceNb);
+        "pm.max_spare_servers" = builtins.toString (5 * instanceNb);
         "pm.process_idle_timeout" = "60";
 
         "php_admin_value[output_buffering]" = "0";
         "php_admin_value[max_execution_time]" = "1800";
         "php_admin_value[zend_extension]" = "opcache";
+        "php_value[apcu.enable_cli]" = "1";
+        "php_value[apcu.enabled]" = "1";
         #already enabled by default?
         #"php_value[opcache.enable]" = "1";
         "php_value[opcache.enable_cli]" = "1";
@@ -91,19 +110,19 @@ in
         "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${phpBaseDir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
         "php_admin_value[session.save_path]" = "/var/lib/nextcloud_farm/phpSessions";
       };
-      phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache ]);
+      inherit phpPackage;
     };
     users.users.root.packages = let
       toOcc = name: pkgs.writeScriptBin "nextcloud-occ-${name}" ''
         #! ${pkgs.stdenv.shell}
-        cd ${nextcloud}
+        cd ${cfg.rootDirs."${name}"}
         NEXTCLOUD_CONFIG_DIR="${toVardir name}" \
           exec \
-          sudo -E -u wwwrun ${pkgs.php74}/bin/php \
-          -c ${pkgs.php74}/etc/php.ini \
+          sudo -E -u wwwrun ${phpPackage}/bin/php \
+          -c ${phpPackage}/etc/php.ini \
           occ $*
         '';
-      in map toOcc cfg.instances;
+      in lib.mapAttrsToList (name: v: toOcc name) cfg.instances;
     services.cron = {
       enable = true;
       systemCronJobs = let
@@ -112,12 +131,12 @@ in
           export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
           export PATH=/run/wrappers/bin:$PATH
           export NEXTCLOUD_CONFIG_DIR="${toVardir name}"
-          ${pkgs.php74}/bin/php -d memory_limit=512M -f ${nextcloud}/cron.php
+          ${phpPackage}/bin/php -c ${phpPackage}/etc/php.ini -d memory_limit=512M -f ${cfg.rootDirs."${name}"}/cron.php
           '';
         toLine = name: ''
           */15 * * * * wwwrun ${toScript name}/bin/nextcloud-cron
           '';
-        in map toLine cfg.instances;
+        in lib.mapAttrsToList (name: v: toLine name) cfg.instances;
     };
   };
 }
index 60e26ade6191d817ba0539096e62b37a7ae8b539..08a9a869ac1b381bf32e5e79713430b206f740ba 100644 (file)
@@ -13,7 +13,10 @@ rec {
   mantisbt_2 = callPackage ./mantisbt_2 {};
   mastodon = callPackage ./mastodon { inherit mylibs; };
   mediagoblin = callPackage ./mediagoblin { inherit mylibs; };
-  nextcloud = callPackage ./nextcloud {};
+  nextcloud_20 = callPackage ./nextcloud { nextcloudVersion = 20; };
+  nextcloud_21 = callPackage ./nextcloud { nextcloudVersion = 21; };
+  nextcloud_22 = callPackage ./nextcloud { nextcloudVersion = 22; };
+  nextcloud_23 = callPackage ./nextcloud { nextcloudVersion = 23; };
   peertube = (mylibs.flakeCompat ../../flakes/peertube).default;
   phpbb = callPackage ./phpbb {};
   phpldapadmin = callPackage ./phpldapadmin {};
index 29fd6e23a860f4a30b31b3f4cf37568fcbfb5f91..00a6ddaf3a53c64b67fabbc0dc5c65ecbb5d3886 100644 (file)
@@ -1,8 +1,15 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "apporder";
-  version = "0.9.0";
-  url = "https://github.com/juliushaertl/apporder/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "1add4i892n4bpmpxwrsr7x99fjyj5rk6maw04iwhviqqqr28fsw6";
-}
+let
+  apporder_0_13_0 = buildApp rec {
+    appName = "apporder";
+    version = "0.13.0";
+    url = "https://github.com/juliushaertl/apporder/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1gnaii65xcmh834n7g7zfzx47hi7scq8j8xh9lriyyxh7dik8as5";
+  };
+  versions = {
+    "20" = apporder_0_13_0;
+    "21" = apporder_0_13_0;
+    "22" = apporder_0_13_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app apporder")
index a49776f10dc680268d50f4a598f5986aebf314f9..37b424ec1edbf8bdefa0baa97b94ec440088f296 100644 (file)
@@ -1,8 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "audioplayer";
-  version = "2.10.0";
-  url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
-  sha256 = "122wc05b0m8s5ksdhsiws98aqph894i7cffjkhfhq66c40a728s3";
-}
+let
+  audioplayer_3_1_0 = buildApp rec {
+    appName = "audioplayer";
+    version = "3.1.0";
+    url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "18h3mzjqcwz4v0wddw59sdwanrdjcqdwsi3pfqddxagq40xjj5pn";
+  };
+  audioplayer_3_2_2 = buildApp rec {
+    appName = "audioplayer";
+    version = "3.2.2";
+    url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "1yqvzphm0i6k8khkfbc37q5x2vw5gp8imvc4nff2d75wykvs37bv";
+  };
+  versions = {
+    "20" = audioplayer_3_1_0;
+    "21" = audioplayer_3_2_2;
+    "22" = audioplayer_3_2_2;
+    "23" = audioplayer_3_2_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app audioplayer")
index 1065c34ef2606e68e896ab076d319460724b0e7e..1900506b0c1924a2b3ab33fbd0bf571f040cdcd0 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "bookmarks";
-  version = "3.0.10";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "0y12iqcc6yp25cisg7mg40ddx72531zdvsp2gcl37qi8vqf162ji";
-}
+let
+  bookmarks_10_0_3 = buildApp rec {
+    appName = "bookmarks";
+    version = "10.0.3";
+    url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "1rjf6gz6hayd8dy4b4c8000svb4dixi2vybsvfvcxp9ks7i3zvq9";
+  };
+  versions = {
+    "20" = bookmarks_10_0_3;
+    "21" = bookmarks_10_0_3;
+    "22" = bookmarks_10_0_3;
+    "23" = bookmarks_10_0_3;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app bookmarks")
index bc3ccea893c47febd7064acd3cd8c80aa50a8684..1c56415baf39c27d76db17f4fbcf9e8da754b23a 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "calendar";
-  version = "2.0.3";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "17pjsa657p9n1kslqkfcxd6n4ssh2yd4f5l5ww79mixfs34idbl9";
-}
+let
+  calendar_3_0_1 = buildApp rec {
+    appName = "calendar";
+    version = "3.0.1";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1rywcac7jk4blhw65n6y2m0p4vx5sj7smczfal91n13ylzyqj5bz";
+  };
+  versions = {
+    "20" = calendar_3_0_1;
+    "21" = calendar_3_0_1;
+    "22" = calendar_3_0_1;
+    "23" = calendar_3_0_1;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app calendar")
index 879ab17a3704beec32a5fceed8082700771f1b90..c6efe5f775518573cea4be1e51c78874cbab6d84 100644 (file)
@@ -1,8 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "carnet";
-  version = "0.20.0";
-  url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz";
-  sha256 = "1hbvs88vj830xalyq8fv8xlnf7livsj1xmnjl4xgla803ch4aym8";
-}
+let
+  carnet_0_24_2 = buildApp rec {
+    appName = "carnet";
+    version = "0.24.2";
+    url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz";
+    sha256 = "0rlzb1sx86rdqdx7ykh55ba70xrwq0h5yalkaawmh41gf08lzqj3";
+  };
+  versions = {
+    "13" = carnet_0_24_2;
+    "14" = carnet_0_24_2;
+    "15" = carnet_0_24_2;
+    "16" = carnet_0_24_2;
+    "17" = carnet_0_24_2;
+    "18" = carnet_0_24_2;
+    "19" = carnet_0_24_2;
+    "20" = carnet_0_24_2;
+    "21" = carnet_0_24_2;
+    "22" = carnet_0_24_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app carnet")
index 64a4f2f286b0ac026b45768b75aba700cd26b32e..fa6ea69f4c53e196bbba493b3118fd09c16137c9 100644 (file)
@@ -1,8 +1,21 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 18 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "circles";
-  version = "0.18.9";
-  url = "https://github.com/nextcloud/circles/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "1a58zrjg4cc0igq14s5zfc5zva83mahmfr0mxvhvnasw7rwkpyzr";
-}
+let
+  circles_0_20_11 = buildApp rec {
+    appName = "circles";
+    version = "0.20.11";
+    url = "https://github.com/nextcloud-releases/circles/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "00r9nyjq38xidgdlgkrxgyhn7bn1w2c4m4pbm26f7gglmb4lsmml";
+  };
+  circles_0_21_4 = buildApp rec {
+    appName = "circles";
+    version = "0.21.4";
+    url = "https://github.com/nextcloud-releases/circles/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "1bxxa3ss4726zb7k13fhs7c39jvzdf8rmzvrx3wbk9wm2avhpnc1";
+  };
+  versions = {
+    "20" = circles_0_20_11;
+    "21" = circles_0_21_4;
+    # Integrated in core from 22
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app circles")
index d80f0b55f105035a1fba6597bcd0caace7f2d340..da46dce138e6dfd268ebe1348741edc06dcfe9af 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "contacts";
-  version = "3.3.0";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "187avlksg4k7ci3jz4djfq8zfyq5jpvhbw2dzlp76wlppm1al4m0";
-}
+let
+  contacts_4_0_6 = buildApp rec {
+    appName = "contacts";
+    version = "4.0.6";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1xyrilnh20s8xi1jy1a1flgbzxx8qikmc1ggv41idx4gs49njq12";
+  };
+  versions = {
+    "20" = contacts_4_0_6;
+    "21" = contacts_4_0_6;
+    "22" = contacts_4_0_6;
+    "23" = contacts_4_0_6;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app contacts")
index 63cac0dd7386b07172f3cb4f8209497c07177a81..2dce8156b30bf9c5ed659efbac199a17a5386e62 100644 (file)
@@ -1,14 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "cookbook";
-  version = "0.6.5";
-  url = "https://github.com/mrzapp/nextcloud-cookbook/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "068dxdxy9ix37970mn348blkdrrnkzad26zgyx4f5s19wm439p5j";
-  installPhase = ''
-    sed -i -e "s/application..ld..json/application[^\"|\\\\']*ld[^\"|\\\\']*json/" lib/Service/RecipeService.php
-    mkdir -p $out
-    cp -R . $out/
+let
+  cookbook_0_9_8 = buildApp rec {
+    appName = "cookbook";
+    version = "0.9.8";
+    url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/Cookbook-${version}.tar.gz";
+    sha256 = "0l99g13hlx4z3fq8kdb1q4ypa19s7snpzy6igk1gpp15lvhw4y1r";
+    installPhase = ''
+      sed -i -e "s/application..ld..json/application[^\"|\\\\']*ld[^\"|\\\\']*json/" lib/Service/RecipeService.php
+      mkdir -p $out
+      cp -R . $out/
     '';
-}
-
+  };
+  versions = {
+    "19" = cookbook_0_9_8;
+    "20" = cookbook_0_9_8;
+    "21" = cookbook_0_9_8;
+    "22" = cookbook_0_9_8;
+    "23" = cookbook_0_9_8;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app cookbook")
index ec693c6e723c0471760ef56feba6e6553dc18fa8..8474dd1f6ac0f8561d85120bef2786ccf7aafc23 100644 (file)
@@ -1,8 +1,36 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion == 18;
-buildApp rec {
-  appName = "deck";
-  version = "1.0.0";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "13r9vd5bf75slrzhvi6bybazhh1vcx0n4a8a7hf97bxr7pq2f91j";
-}
+let
+  deck_1_2_11 = buildApp rec {
+    appName = "deck";
+    version = "1.2.11";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1mjpghqldx41bm0vmkfqmp41wayd60cf5m9c7h6rcakqymzjjimm";
+  };
+  deck_1_4_7 = buildApp rec {
+    appName = "deck";
+    version = "1.4.7";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1kyzb8rydjsb80g0bkrnfgqpmrgyvzgln9g0bfxl68rildfnnz95";
+  };
+  deck_1_5_5 = buildApp rec {
+    appName = "deck";
+    version = "1.5.5";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0pjx52kripi090y995cr2pg56plly53jrgmjy7934cdn99b9zgnz";
+  };
+  deck_1_6_0 = buildApp rec {
+    appName = "deck";
+    version = "1.6.0";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1j8am0cnifkpdikgsd1bn2pya3f4i2mk6qrkmvn66qv0ygvkvldf";
+  };
+  versions = {
+    "18" = deck_1_2_11;
+    "19" = deck_1_2_11;
+    "20" = deck_1_2_11;
+    "21" = deck_1_4_7;
+    "22" = deck_1_5_5;
+    "23" = deck_1_6_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app deck")
diff --git a/pkgs/webapps/nextcloud/apps/drawio.nix b/pkgs/webapps/nextcloud/apps/drawio.nix
new file mode 100644 (file)
index 0000000..1b54253
--- /dev/null
@@ -0,0 +1,17 @@
+{ buildApp, nextcloudVersion }:
+let
+  drawio_1_0_3 = buildApp rec {
+    appName = "drawio";
+    version = "1.0.3";
+    url = "https://github.com/pawelrojek/nextcloud-drawio/releases/download/v.${version}/drawio-v${version}.tar.gz";
+    sha256 = "0nf0bk3i3f772nf6qsc4d1y8mq0iya8qxqzp58jv242p8rp8skyx";
+  };
+  versions = {
+    "19" = drawio_1_0_3;
+    "20" = drawio_1_0_3;
+    "21" = drawio_1_0_3;
+    "22" = drawio_1_0_3;
+    "23" = drawio_1_0_3;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app drawio")
diff --git a/pkgs/webapps/nextcloud/apps/external.nix b/pkgs/webapps/nextcloud/apps/external.nix
new file mode 100644 (file)
index 0000000..f0572f2
--- /dev/null
@@ -0,0 +1,20 @@
+{ buildApp, nextcloudVersion }:
+let
+  external_3_10_2 = buildApp rec {
+    appName = "external";
+    version = "3.10.2";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+    sha256 = "01r9nyjq38xidgdlgkrxgyhn7bn1w2c4m4pbm26f7gglmb4lsmml";
+  };
+  external_3_9_0 = buildApp rec {
+    appName = "external";
+    version = "3.9.0";
+    url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "0fb9qg63p07wrfpjg36n80jcvj7wfv39vnwgc6jkxs6q647pbbp0";
+  };
+  versions = {
+    "22" = external_3_9_0;
+    "23" = external_3_10_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app external")
index daa9d2d5277616cb3b5af0881a4d1683ba11bfe3..0667275c3b5162e1b3ac540b3c25f042059c39f4 100644 (file)
@@ -1,8 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "extract";
-  version = "1.2.4";
-  url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz";
-  sha256 = "0f1csv0warga12a1hkgdcnhnfiwfv5z2ab3mri4frn2qlh12wyby";
-}
+let
+  extract_1_3_2 = buildApp rec {
+    appName = "extract";
+    version = "1.3.2";
+    url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz";
+    sha256 = "1sylrlgg641672d2wrb5xrh0yjdlnwvmglk5hh5bw44vqf0jjqf4";
+  };
+  versions = {
+    "13" = extract_1_3_2;
+    "14" = extract_1_3_2;
+    "15" = extract_1_3_2;
+    "16" = extract_1_3_2;
+    "17" = extract_1_3_2;
+    "18" = extract_1_3_2;
+    "19" = extract_1_3_2;
+    "20" = extract_1_3_2;
+    "21" = extract_1_3_2;
+    "22" = extract_1_3_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app extract")
index 5810ec99649e7563bc68650eca15d0edc02b579e..dc1ced92397057fd8a84b75c3298fdd5ab21a3f0 100644 (file)
@@ -1,8 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "files_markdown";
-  version = "2.2.0";
-  url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "05f793pznkkdgmr3wfqfbhwcg8s8kcvpfxnhzyj0pbw19srls2aw";
-}
+let
+  files_markdown_2_3_4 = buildApp rec {
+    appName = "files_markdown";
+    version = "2.3.4";
+    url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "09chqlqcyyi9mb3cpjwa3b56sj6ah88119q6v7hvabfpdr41fljf";
+  };
+  files_markdown_2_3_5 = buildApp rec {
+    appName = "files_markdown";
+    version = "2.3.5";
+    url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1g6qlf3qbhfl3q0zwwd77y0fkw35fg2a4whhbfvhc5c2nik9zqnb";
+  };
+  versions = {
+    "20" = files_markdown_2_3_4;
+    "21" = files_markdown_2_3_5;
+    "22" = files_markdown_2_3_5;
+    "23" = files_markdown_2_3_5;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_markdown")
index e347053f44cdbf0efab6a088cb1a8e5e14992093..06176c57a2f89073a1d3f7d619473af5b4ce0734 100644 (file)
@@ -1,13 +1,31 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 21;
-buildApp rec {
-  appName = "files_mindmap";
-  version = "0.0.24";
-  url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "1cd6lq8z7k2h5dnj58qrxfs7l5pw3qw2w8r5r90r7an8v215gv2p";
-  installHook = self: ''
-    # https://github.com/ACTom/files_mindmap/issues/122
-    ln -s ${self}/img/mindmap.svg $out/core/img/filetypes/
-  '';
-}
-
+let
+  files_mindmap_0_0_25_fix = buildApp rec {
+    appName = "files_mindmap";
+    version = "0.0.25";
+    url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "1z4bi4i8gw0azf6vn78014sal4gajsapkc6w99n89pb0jyy13551";
+    installHook = self: ''
+      # https://github.com/ACTom/files_mindmap/issues/122
+      ln -s ${self}/img/mindmap.svg $out/core/img/filetypes/
+    '';
+  };
+  files_mindmap_0_0_25 = buildApp rec {
+    appName = "files_mindmap";
+    version = "0.0.25";
+    url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "1z4bi4i8gw0azf6vn78014sal4gajsapkc6w99n89pb0jyy13551";
+  };
+  versions = {
+    "14" = files_mindmap_0_0_25_fix;
+    "15" = files_mindmap_0_0_25_fix;
+    "16" = files_mindmap_0_0_25_fix;
+    "17" = files_mindmap_0_0_25_fix;
+    "18" = files_mindmap_0_0_25_fix;
+    "19" = files_mindmap_0_0_25_fix;
+    "20" = files_mindmap_0_0_25_fix;
+    "21" = files_mindmap_0_0_25;
+    "22" = files_mindmap_0_0_25;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_mindmap")
index c9728c08a4cde6cfea73aeb647ecde613ecbb00a..65539dfde92cd8bd6843e34cbbc1351d92f4ddc7 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "files_readmemd";
-  version = "1.1.4";
-  url = "https://gitlab.univ-nantes.fr/uncloud/files_readmemd/-/wikis/uploads/e1d280e855f37e5f0a421c757868113c/${appName}.tar.gz";
-  sha256 = "1sfaghbyzfv3hg5vhj1nprb85zsl6lcr2x88ks6l9ndv49nfbvm9";
-}
+let
+  files_readmemd_1_2_1 = buildApp rec {
+    appName = "files_readmemd";
+    version = "1.2.1";
+    url = "https://gitlab.univ-nantes.fr/uncloud/files_readmemd/-/wikis/uploads/57409c528bde96202d03d2e3887b3fae/${appName}.tar.gz";
+    sha256 = "0cmawxlwycm8v3r2776ffvd260vrgkwrxk4lyhx83nx6bnys009z";
+  };
+  versions = {
+    "19" = files_readmemd_1_2_1;
+    "20" = files_readmemd_1_2_1;
+    "21" = files_readmemd_1_2_1;
+    "22" = files_readmemd_1_2_1;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_readmemd")
index 516ee3244e3033f63c7456c97858e74699428f08..a4fceb0406ea302d75941a14f8fc641130f3657b 100644 (file)
@@ -1,8 +1,25 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 15 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "flowupload";
-  version = "0.1.8";
-  url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
-  sha256 = "0llg5cr4fgqg512znp9bga77y7vdsi2pgsyl4m3a54c557zyjah3";
-}
+let
+  flowupload_1_1_2 = buildApp rec {
+    appName = "flowupload";
+    version = "1.1.2";
+    url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "1yg7j5gzq9znfm1v9dqmx4v8c46py6641hnp0bfh9zsf00v6a6v2";
+  };
+  flowupload_1_1_3 = buildApp rec {
+    appName = "flowupload";
+    version = "1.1.3";
+    url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "0d1xvimd4hzd0jpvv1h89zfqv3ajlrrm1xdbggvjhk9bllwqgxng";
+  };
+  versions = {
+    "17" = flowupload_1_1_2;
+    "18" = flowupload_1_1_2;
+    "19" = flowupload_1_1_2;
+    "20" = flowupload_1_1_3;
+    "21" = flowupload_1_1_3;
+    "22" = flowupload_1_1_3;
+    "23" = flowupload_1_1_3;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app flowupload")
index cd3e8786355ec4995b43f5a4ba03d1484d9ad658..65c28fa0d884725c463757d2c0194ec364d9799a 100644 (file)
@@ -1,16 +1,30 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "gpxedit";
-  version = "0.0.13";
-  url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/a7c638d1b038514d07bb5c787b6e7961/${appName}-${version}.tar.gz";
-  sha256 = "1b15iqaq8fj3khpx3lh0fyqkhmj6x44fc59pg3cp3jrh3bpg0534";
-  otherConfig = {
-    mimetypealiases = {
-      "application/gpx+xml" = "gpx";
-    };
-    mimetypemapping = {
-      "gpx" = ["application/gpx+xml"];
+let
+  gpxedit_0_0_14 = buildApp rec {
+    appName = "gpxedit";
+    version = "0.0.14";
+    url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/5b184c24f9e767ad19a84e177a9b473c/${appName}-${version}.tar.gz";
+    sha256 = "1kgpcxps73l83krrjxdzh4vzacja4m3vwidf9kidgqq505cgzq90";
+    otherConfig = {
+      mimetypealiases = {
+        "application/gpx+xml" = "gpx";
+      };
+      mimetypemapping = {
+        "gpx" = ["application/gpx+xml"];
+      };
     };
   };
-}
+  versions = {
+    "14" = gpxedit_0_0_14;
+    "15" = gpxedit_0_0_14;
+    "16" = gpxedit_0_0_14;
+    "17" = gpxedit_0_0_14;
+    "18" = gpxedit_0_0_14;
+    "19" = gpxedit_0_0_14;
+    "20" = gpxedit_0_0_14;
+    "21" = gpxedit_0_0_14;
+    "22" = gpxedit_0_0_14;
+    "23" = gpxedit_0_0_14;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxedit")
index 07501447d33fba3abe9a047ae4b59b0027098c70..f0b9881d08ac4771e899f6082f4a3796b1535d6d 100644 (file)
@@ -1,16 +1,39 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "gpxpod";
-  version = "4.2.1";
-  url = "https://gitlab.com/eneiluj/gpxpod-oc/wikis/uploads/0361f9dc50633f0f39d929442935435c/${appName}-${version}.tar.gz";
-  sha256 = "0ycpychq6g8axdprvd0ahgdy2pwfdbfyf1pxk4cprr4ab986aq1x";
-  otherConfig = {
-    mimetypealiases = {
-      "application/gpx+xml" = "gpx";
+let
+  gpxpod_4_2_8 = buildApp rec {
+    appName = "gpxpod";
+    version = "4.2.8";
+    url = "https://gitlab.com/eneiluj/gpxpod-oc/wikis/uploads/630aee117900664644669890e6693383/${appName}-${version}.tar.gz";
+    sha256 = "1v47153zwxgfcw0ls4qppi1asa4kbgzbysqvfhs6lhv1pfpml5l4";
+    otherConfig = {
+      mimetypealiases = {
+        "application/gpx+xml" = "gpx";
+      };
+      mimetypemapping = {
+        "gpx" = ["application/gpx+xml"];
+      };
     };
-    mimetypemapping = {
-      "gpx" = ["application/gpx+xml"];
+  };
+  gpxpod_4_3_0 = buildApp rec {
+    appName = "gpxpod";
+    version = "4.3.0";
+    url = "https://gitlab.com/eneiluj/gpxpod-oc/wikis/uploads/89555a30934ebbe34c3a515aabd1781a/${appName}-${version}.tar.gz";
+    sha256 = "02l1iq5d7bzl2y3igfgs0v6hbvn6b8rxxq7lcvsax0ksmry4d314";
+    otherConfig = {
+      mimetypealiases = {
+        "application/gpx+xml" = "gpx";
+      };
+      mimetypemapping = {
+        "gpx" = ["application/gpx+xml"];
+      };
     };
   };
-}
+  versions = {
+    "19" = gpxpod_4_2_8;
+    "20" = gpxpod_4_2_8;
+    "21" = gpxpod_4_2_8;
+    "22" = gpxpod_4_3_0;
+    "23" = gpxpod_4_3_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxpod")
diff --git a/pkgs/webapps/nextcloud/apps/groupfolders.nix b/pkgs/webapps/nextcloud/apps/groupfolders.nix
new file mode 100644 (file)
index 0000000..9ea5902
--- /dev/null
@@ -0,0 +1,34 @@
+{ buildApp, nextcloudVersion }:
+let
+  groupfolders_10_0_0 = buildApp rec {
+    appName = "groupfolders";
+    version = "10.0.0";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0hgchd3d4d27hg1mvc3kffwjjdvqwmxg652i8jgd17hppm4z5abi";
+  };
+  groupfolders_11_1_0 = buildApp rec {
+    appName = "groupfolders";
+    version = "11.1.0";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0fr1m3wld206hhppf347hibwp0vm41dv864vblnl2wv33hrsrxla";
+  };
+  groupfolders_9_0_3 = buildApp rec {
+    appName = "groupfolders";
+    version = "9.0.3";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "19gcd3ci2rfn7bgs0mfrmfgk2iwcmkwamckl915cbkfzwwfa4cph";
+  };
+  groupfolders_8_2_3 = buildApp rec {
+    appName = "groupfolders";
+    version = "8.2.3";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "0vs9jgbavcl27fhp1lyqjfp2nsdzg7aiwmxjgh0fz8xrq0dnbx0v";
+  };
+  versions = {
+    "20" = groupfolders_8_2_3;
+    "21" = groupfolders_9_0_3;
+    "22" = groupfolders_10_0_0;
+    "23" = groupfolders_11_1_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app groupfolders")
index 66cc893e9078a1dc7fb95b38f1d2b449542d2e1d..65af7dd6556f760cefa64e8910e42557df4f5167 100644 (file)
@@ -1,9 +1,34 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 18 && nextcloudVersion < 19;
-buildApp rec {
-  appName = "impersonate";
-  version = "1.5.2";
-  url = "https://github.com/nextcloud/impersonate/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "03fm9d2p6ap9gyiw5anmlwsdmiyklrkpdgchfx2zfgxn38pjrz6d";
-}
-
+let
+  impersonate_1_7_0 = buildApp rec {
+    appName = "impersonate";
+    version = "1.7.0";
+    url = "https://github.com/nextcloud/impersonate/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "171qd79c1w0lazadsyv400sqsxkb588n50wz6iasjd8yachachyd";
+  };
+  impersonate_1_8_0 = buildApp rec {
+    appName = "impersonate";
+    version = "1.8.0";
+    url = "https://github.com/nextcloud/impersonate/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "08q09zz56lz9yc22spgrkz19s5m37w5c20i00ssg7cgf3yhj9gwh";
+  };
+  impersonate_1_9_0 = buildApp rec {
+    appName = "impersonate";
+    version = "1.9.0";
+    url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0r1wxx1asnd0bbf9ykks5zha5fa3x5gr9qn9m2mw09fmm52xypqj";
+  };
+  impersonate_1_10_0 = buildApp rec {
+    appName = "impersonate";
+    version = "1.10.0";
+    url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
+    sha256 = "036r8m3lid0p442nhwlgfia4y4ylj4vr52872gbhi16d4w6qzb9s";
+  };
+  versions = {
+    "20" = impersonate_1_7_0;
+    "21" = impersonate_1_8_0;
+    "22" = impersonate_1_9_0;
+    "23" = impersonate_1_10_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app impersonate")
index 4ea13990dfc3535fbb3603f355ec2a9a47a345d1..715ff47e19bf6e4a3c0043dc27b15d954e29017c 100644 (file)
@@ -1,17 +1,29 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 11 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "keeweb";
-  version = "0.6.2";
-  url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "067801qz0fcfvmb14ja1ringzk53j1wp7ys2fl7lnlhf45r81vxx";
-  installPhase = ''
-    mkdir -p $out
-    cp -R . $out/
-    '';
-  otherConfig = {
-    mimetypemapping = {
-      "kdbx" = ["application/x-kdbx"];
+let
+  keeweb_0_6_8 = buildApp rec {
+    appName = "keeweb";
+    version = "0.6.8";
+    url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "1r0iljspyz964w46swc05xsmzm1qfsv33d90rg06s7fwmfqccpin";
+    installPhase = ''
+      mkdir -p $out
+      cp -R . $out/
+      '';
+    otherConfig = {
+      mimetypemapping = {
+        "kdbx" = ["application/x-kdbx"];
+      };
     };
   };
-}
+  versions = {
+    "16" = keeweb_0_6_8;
+    "17" = keeweb_0_6_8;
+    "18" = keeweb_0_6_8;
+    "19" = keeweb_0_6_8;
+    "20" = keeweb_0_6_8;
+    "21" = keeweb_0_6_8;
+    "22" = keeweb_0_6_8;
+    "23" = keeweb_0_6_8;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app keeweb")
index 898df6c34277f5131d5d6901e388f72b0963d907..6d7c6960f88b5f4728ca9ced1c22efd12f9a9f38 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "maps";
-  version = "0.1.6";
-  url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "1yh5h96c91lgz58zcm7zdpblvsc6c6nflx8pldfds102x292mprk";
-}
+let
+  maps_0_1_9 = buildApp rec {
+    appName = "maps";
+    version = "0.1.9";
+    url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "007y80idqg6b6zk6kjxg4vgw0z8fsxs9lajnv49vv1zjy6jx2i1i";
+  };
+  versions = {
+    "20" = maps_0_1_9;
+    "21" = maps_0_1_9;
+    "22" = maps_0_1_9;
+    "23" = maps_0_1_9;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app maps")
index 2d62f5303b1a298c03fd7d49770d4209ef0cc970..a9ef0bd7c634af2ace5ae80873af52519fb6c2d5 100644 (file)
@@ -1,8 +1,23 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "metadata";
-  version = "0.11.1";
-  url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "11napkv5s29xk1gmbfvy610ab1kc06qxqzw606ix5x0d1x4m3h0c";
-}
+let
+  metadata_0_15_0 = buildApp rec {
+    appName = "metadata";
+    version = "0.15.0";
+    url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "16mnb2df15wdpbpl5x4lm3hr27wk0cxi0d06v0i146mh04dyqn4x";
+  };
+  versions = {
+    "13" = metadata_0_15_0;
+    "14" = metadata_0_15_0;
+    "15" = metadata_0_15_0;
+    "16" = metadata_0_15_0;
+    "17" = metadata_0_15_0;
+    "18" = metadata_0_15_0;
+    "19" = metadata_0_15_0;
+    "20" = metadata_0_15_0;
+    "21" = metadata_0_15_0;
+    "22" = metadata_0_15_0;
+    "23" = metadata_0_15_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app metadata")
index e430dd9ee342f913c126efddcf5cf8d8c1401472..95a740d0f629a5b0eccef325033a4ee3212879f2 100644 (file)
@@ -1,9 +1,23 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 9 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "music";
-  version = "0.14.1";
-  url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}.zip";
-  zip = true;
-  sha256 = "06svn24qix0nbikwi0kxnli402vq99851bn5ljcsm10r74bnlw83";
-}
+let
+  music_1_5_0 = buildApp rec {
+    appName = "music";
+    version = "1.5.0";
+    url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}_${version}_for_nextcloud.tar.gz";
+    sha256 = "1xn1n1y7z2ymw77jh56ig34qznkmlhvhb5g2h7dmsag1wdh76qmz";
+  };
+  versions = {
+    "13" = music_1_5_0;
+    "14" = music_1_5_0;
+    "15" = music_1_5_0;
+    "16" = music_1_5_0;
+    "17" = music_1_5_0;
+    "18" = music_1_5_0;
+    "19" = music_1_5_0;
+    "20" = music_1_5_0;
+    "21" = music_1_5_0;
+    "22" = music_1_5_0;
+    "23" = music_1_5_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app music")
index 7a06bbc75bb89da24644685e28a7e592c8a71dad..f3bfaa9a972d46332fd309567390737d780aa6ca 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "notes";
-  version = "3.3.0";
-  url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}.tar.gz";
-  sha256 = "03k0ijma7sccwqq9ch3bvgbg9kxr2wk0bmkxzxrc9in1d40d3k7f";
-}
+let
+  notes_4_2_0 = buildApp rec {
+    appName = "notes";
+    version = "4.2.0";
+    url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0f5p65rb86g38qq6ybf7gakzp1a81h09szg7hypby8nm5vic3ly0";
+  };
+  versions = {
+    "20" = notes_4_2_0;
+    "21" = notes_4_2_0;
+    "22" = notes_4_2_0;
+    "23" = notes_4_2_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app notes")
index aee1ff293d5adf1812eba1c7d527259f554b1f18..dcdaad26837b776be26ed200cf37ede0a1975f6e 100644 (file)
@@ -1,12 +1,21 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
-  appName = "ocsms";
-  version = "2.1.7";
-  url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
-  sha256 = "1pfdzq16nbh4wfmkmif0dxacxg0fy4n4cp2d1hbq9k2z9awcx1vh";
-  installPhase = ''
-    mkdir -p $out
-    cp -R . $out/
-    '';
-}
+let
+  ocsms_2_2_0 = buildApp rec {
+    appName = "ocsms";
+    version = "2.2.0";
+    url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+    sha256 = "1hjl11lxdflk4w0l8prcjr3jvmsm8njldbrmnqm7yhdy6qcfli28";
+    installPhase = ''
+      mkdir -p $out
+      cp -R . $out/
+      '';
+  };
+  versions = {
+    "18" = ocsms_2_2_0;
+    "19" = ocsms_2_2_0;
+    "20" = ocsms_2_2_0;
+    # Beware, 1.10.1 has a too wide range of versions and is not
+    # compatible with nextcloud > 20!
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app ocsms")
diff --git a/pkgs/webapps/nextcloud/apps/onlyoffice.nix b/pkgs/webapps/nextcloud/apps/onlyoffice.nix
new file mode 100644 (file)
index 0000000..f3c9f93
--- /dev/null
@@ -0,0 +1,16 @@
+{ buildApp, nextcloudVersion }:
+let
+  onlyoffice_7_2_1 = buildApp rec {
+    appName = "onlyoffice";
+    version = "7.2.1";
+    url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0avs9pf45xa73xadf6vmfwicjgb5dcq2cspwm2l5npailz05lyd0";
+  };
+  versions = {
+    "20" = onlyoffice_7_2_1;
+    "21" = onlyoffice_7_2_1;
+    "22" = onlyoffice_7_2_1;
+    "23" = onlyoffice_7_2_1;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app onlyoffice")
index 2de4882b7a1cdb1592b5f29dd0e47dafbcb74472..94e0a834e5d421376ed79fa17f0275f3acb18812 100644 (file)
@@ -1,10 +1,17 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 18;
-buildApp rec {
-  # FIXME: it creates a /settings/user/additional setting url which
-  # doesn’t work
-  appName = "passman";
-  version = "2.3.5";
-  url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
-  sha256 = "05gc288n43c7dhmq1jqfn8cfw7sycwdfhn36j8rh8nbx1irldbjn";
-}
+let
+  passman_2_3_1335 = buildApp rec {
+    # FIXME: it creates a /settings/user/additional setting url which
+    # doesn’t work
+    appName = "passman";
+    version = "2.3.1335";
+    url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
+    sha256 = "12mbf08j3xlgwv0m2ssg1rx1rvnrjqv36p1xxap2b57i4zjy559l";
+  };
+  versions = {
+    "20" = passman_2_3_1335;
+    "21" = passman_2_3_1335;
+    "22" = passman_2_3_1335;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app passman")
index 69e11025e632e88498efb35bd25aacada2a76672..fef762fb6cb7d6426d93155f21ee8162fd9ade1b 100644 (file)
@@ -1,8 +1,22 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "polls";
-  version = "1.4.3";
-  url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "07l5x5xblk6w8f6mqz3a5hjpry8qc3zgqi49z6bp5ipnzj0s6wm4";
-}
+let
+  polls_2_0_6 = buildApp rec {
+    appName = "polls";
+    version = "2.0.6";
+    url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "0pfsfwipwpnaldp5436jbfwhw3ign5h612njzx53j75v8ykq06zi";
+  };
+  polls_3_4_0 = buildApp rec {
+    appName = "polls";
+    version = "3.4.0";
+    url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1ddcf4ckbazyf2rwhxgpfpwvy217zd8a8akq5zhify4kjkbpgb9y";
+  };
+  versions = {
+    "20" = polls_2_0_6;
+    "21" = polls_3_4_0;
+    "22" = polls_3_4_0;
+    "23" = polls_3_4_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app polls")
index 75b790aea417c5fe668afc108478dd782d3907ba..1294c8cddc42972987e8171c48df411adeaa87a9 100644 (file)
@@ -1,9 +1,14 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "social";
-  version = "0.3.1";
-  url = "https://github.com/nextcloud/social/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "03hh6vr34p33dphrjqmc7s8mvsk5n7dl817j8qkf75203y8szhdy";
-}
-
+let
+  social_0_4_2 = buildApp rec {
+    appName = "social";
+    version = "0.4.2";
+    url = "https://github.com/nextcloud/social/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "0nzsl70al4aqblbyzddlrhivbk2x559mbwn8slyg3k0wy9ynsi4p";
+  };
+  versions = {
+    "20" = social_0_4_2;
+    "21" = social_0_4_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app social")
index b52c8c5eb00591cb7b558c59e40f14601e03e909..9c94639e0a17c3f23ddfc74a627e56079b87d0f5 100644 (file)
@@ -1,8 +1,34 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion == 18;
-buildApp rec {
-  appName = "spreed";
-  version = "8.0.8";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
-  sha256 = "19szk61ixzzrabs63l2fihx7k4f6a8k4kdzpa0xxzv5w9ssqjhbj";
-}
+let
+  spreed_10_0_10 = buildApp rec {
+    appName = "spreed";
+    version = "10.0.10";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "0daajsc7s52l56h58vhvnh8d1a2vh14rkdayjgwc75bh7zv506yi";
+  };
+  spreed_11_3_3 = buildApp rec {
+    appName = "spreed";
+    version = "11.3.3";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "0mhglx3rf7j4dyf8asmwakvzpn2mjcysa0iwfn42b2cyd7gw4viq";
+  };
+  spreed_12_1_2 = buildApp rec {
+    appName = "spreed";
+    version = "12.1.2";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+    sha256 = "02npw6iqi5b36xqzkdgmxsv464i67yfzf7b3bj3gdpn6w50mnnl9";
+  };
+  spreed_13_0_0 = buildApp rec {
+    appName = "spreed";
+    version = "13.0.0";
+    url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+    sha256 = "0r07zrkld7miv5wdn5ssrhqylaplvbc9fr1qnil023d6yyc4jfwi";
+  };
+  versions = {
+    "20" = spreed_10_0_10;
+    "21" = spreed_11_3_3;
+    "22" = spreed_12_1_2;
+    "23" = spreed_13_0_0;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app spreed")
diff --git a/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix b/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix
new file mode 100644 (file)
index 0000000..dcf73cd
--- /dev/null
@@ -0,0 +1,16 @@
+{ buildApp, nextcloudVersion }:
+let
+  talk_matterbridge_1_23_2 = buildApp rec {
+    appName = "talk_matterbridge";
+    version = "1.23.2";
+    url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "1p2mahi4ml1wnj75irysm17s7lpbgjvlrc2yin1ii6ac19zflwcj";
+  };
+  versions = {
+    "20" = talk_matterbridge_1_23_2;
+    "21" = talk_matterbridge_1_23_2;
+    "22" = talk_matterbridge_1_23_2;
+    "23" = talk_matterbridge_1_23_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app talk_matterbridge")
index a2de4657cb6e97dff6997c5c061da6395497907a..937ecab9997825a430d4ba585e472207fed452ca 100644 (file)
@@ -1,8 +1,16 @@
 { buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
-  appName = "tasks";
-  version = "0.12.2";
-  url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
-  sha256 = "092fg7dpx69jp5z0ka14ay6bnfdcnjq8zk2gc3rwpzc3llpdnqph";
-}
+let
+  tasks_0_14_2 = buildApp rec {
+    appName = "tasks";
+    version = "0.14.2";
+    url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+    sha256 = "120r2ssfpnpvvzhk26gjkv5bvzy65zmcj2jyqrz1p8pap3ba27ar";
+  };
+  versions = {
+    "20" = tasks_0_14_2;
+    "21" = tasks_0_14_2;
+    "22" = tasks_0_14_2;
+    "23" = tasks_0_14_2;
+  };
+in
+  versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app tasks")
index 1b011697eeb8f8a8223f007268f8ec2bfdf97c03..c6677db6b848d332d8f734c52424c739eb213bb4 100644 (file)
@@ -1,33 +1,44 @@
-{ varDir ? "/var/lib/nextcloud", nextcloudVersion ? 18, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl }:
+{ varDir ? "/var/lib/nextcloud", nextcloudVersion, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl }:
 let
+  shasumsAndVersion = {
+    "20" = { sum = "0rwky0d5i5glck5xxfsa9ygd0v2wf58k2q4ipmyvgq4rki2jqr89"; fullVersion = "20.0.14"; };
+    "21" = { sum = "1dqk2lpqc08qld8znp5vpcm8j8j8spfgvl8ax9faxpmmdrcj34sr"; fullVersion = "21.0.7"; };
+    "22" = { sum = "0allxfcnhh4bkp4s66b47smsn7y9qxlcnxxnxnmw0f0795m9m8k6"; fullVersion = "22.2.3"; };
+    "23" = { sum = "0b0ss1svxyg3kfbymhn85zspmf0lyhj1la2rhk98yp5nqfmr4xf3"; fullVersion = "23.0.0"; };
+  };
   appNames = [
     "apporder" "audioplayer" "bookmarks" "calendar" "carnet" "circles"
-    "contacts" "cookbook" "deck" "extract" "files_markdown" "files_mindmap"
-    "files_readmemd" "flowupload" "gpxedit" "gpxpod" "impersonate"
-    "keeweb" "maps" "metadata" "music" "notes" "ocsms" "passman" "polls"
-    "spreed" "social" "tasks"
+    "contacts" "cookbook" "deck" "external" "extract" "files_markdown" "files_mindmap"
+    "files_readmemd" "flowupload" "gpxedit" "gpxpod" "groupfolders" "impersonate"
+    "keeweb" "maps" "metadata" "music" "notes" "ocsms" "onlyoffice" "passman" "polls"
+    "social" "spreed" "talk_matterbridge" "tasks" "drawio"
   ];
-  allApps = lib.attrsets.genAttrs appNames
-    (name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; });
-  buildApp = { appName, version, url, sha256, zip ? false, installHook ? (n: ""), otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }:
+  toApp = name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; };
+  allSupportedApps = lib.mapAttrs (n: v: v.value) (lib.filterAttrs (n: v: v.success) (lib.genAttrs appNames (name: builtins.tryEval (toApp name))));
+  allApps = lib.genAttrs appNames toApp;
+  buildApp = { appName, version, url, sha256, installHook ? (n: ""), otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }:
     stdenv.mkDerivation rec {
       name = "nextcloud-app-${appName}-${version}";
       inherit version;
       phases = "unpackPhase installPhase";
       inherit installPhase;
-      src = (if zip then fetchzip else fetchurl) { inherit url sha256; };
+      src = fetchurl { inherit url sha256; };
       passthru = {
         inherit appName otherConfig installHook;
       };
     };
   toPassthru = pkg: apps: otherConfig: {
-    inherit apps otherConfig allApps buildApp varDir;
+    inherit apps otherConfig allApps allSupportedApps buildApp varDir;
     withApps = withApps pkg;
   };
   withApps = pkg: toApps:
     let
       apps = toApps allApps;
       toInstallApp = n: ''
+        if [ -e $out/apps/${n.appName} ]; then
+          echo "${n.appName} already exists"
+          false
+        fi
         ln -sf ${n} $out/apps/${n.appName}
       '' + (n.installHook n);
       zipped = lib.attrsets.zipAttrs ([pkg.otherConfig or {}] ++ map (v: v.otherConfig) apps);
@@ -42,16 +53,17 @@ let
     in newNextcloud;
   package = stdenv.mkDerivation rec {
     name = "nextcloud-${version}";
-    version = "${builtins.toString nextcloudVersion}.0.4";
+    version = shasumsAndVersion."${builtins.toString nextcloudVersion}".fullVersion;
 
     src = fetchurl {
       url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
-      sha256 = "0aa3f4xbkzacfw0h9aic0ywk5mqlwka83qaszizj8lmk68kf3n7s";
+      sha256 = shasumsAndVersion."${builtins.toString nextcloudVersion}".sum;
     };
 
     installPhase = ''
       mkdir -p $out/
       cp -R . $out/
+      sed -i -e "/'appDirsWithDifferentOwner'/d" $out/apps/settings/lib/Controller/CheckSetupController.php
       rm -r $out/config
       '' + lib.optionalString (varDir != null) ''
         ln -sf ${varDir}/config $out/config