---------
- 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
{ 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);
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 ];
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 = {
#! ${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 [
''
{ 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
];
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";
"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 + ''
{ 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 ];
};
};
{ 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";
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";
'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 (
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 ];
user = "wwwrun";
group = "wwwrun";
settings = phpFpm.pool;
- phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache ]);
+ inherit phpPackage;
};
services.cron = {
#! ${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 [
''
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
</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 = ''
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";
"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
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;
};
};
}
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 {};
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
--- /dev/null
+{ 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")
--- /dev/null
+{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
--- /dev/null
+{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
--- /dev/null
+{ 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")
{ 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")
{ 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")
{ 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")
{ 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")
--- /dev/null
+{ 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")
{ 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")
-{ 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);
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