]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - nixops/modules/websites/tools/cloud/nextcloud.nix
Add version logs for make-env
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / cloud / nextcloud.nix
index 1a490258306b27851c7430d8adbd1e00ecaf36e7..b62606f10d6e2c7111627ebe8c64b573cd8bae9d 100644 (file)
@@ -12,15 +12,15 @@ let
     apps = {
       audioplayer = buildApp rec {
         appName = "audioplayer";
-        version = "2.5.0";
+        version = "2.6.0";
         url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
-        sha256 = "1pg4y51cv3agy28n4gfc8i7x1ya1yijxrmhpblm1n846vhmwdcm8";
+        sha256 = "08apm7dhnljagcvq8b1dsqcck4nqwmz60bf3mx44xvbhiaq6nim4";
       };
       bookmarks = buildApp rec {
         appName = "bookmarks";
-        version = "0.14.3";
+        version = "0.16.2";
         url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
-        sha256 = "0s7lkcl70izlkihnml1par0cac0wvckllyyga3jkb7k9vdg7d40c";
+        sha256 = "0ghk71iyk5xlqsfahg0d0lpp9lparpdnv2qx11a7j64pc9gzcfl4";
       };
       calendar = buildApp rec {
         appName = "calendar";
@@ -30,9 +30,9 @@ let
       };
       contacts = buildApp rec {
         appName = "contacts";
-        version = "3.0.0";
+        version = "3.0.3";
         url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
-        sha256 = "0fafy5kgzr5ldr3hxxxgmnw4y3qpjnv5ha1f1dlmqbc65s8frw7s";
+        sha256 = "026hfigfzqb1cvq6a7mg9656nkm21c19a6ipqzgv00ycf38qyk95";
       };
       deck = buildApp rec {
         appName = "deck";
@@ -54,15 +54,26 @@ let
       };
       gpxpod = buildApp rec {
         appName = "gpxpod";
-        version = "3.0.0";
-        url = "https://gitlab.com/eneiluj/gpxpod-oc/-/archive/v${version}/${appName}-oc-v${version}.tar.gz";
-        sha256 = "0smpi4r3z7zfl1612fb30cwm1xmpiq95c81zzqiwzjf288iys74k";
+        version = "3.0.1";
+        url = "https://gitlab.com/eneiluj/gpxpod-oc/wikis/uploads/3f5fbc895de15f11f90582c4872839dc/${appName}-${version}.tar.gz";
+        sha256 = "1g3602phrdpybamr4bnk5niv1znmwp19lqyw6d8yxmc84lg99dny";
       };
       keeweb = buildApp rec {
         appName = "keeweb";
         version = "0.4.0";
         url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
         sha256 = "0453kkb0a8vfivmibpwpx4bvhyn64jhns6cdfjacmnvbm6d75nj1";
+        installPhase = ''
+          mkdir -p $out
+          cp -R . $out/
+          sed -i -e 's/max-version="12"/max-version="16"/' $out/appinfo/info.xml
+        '';
+      };
+      music = buildApp rec {
+        appName = "music";
+        version = "0.9.3";
+        url = "https://github.com/owncloud/${appName}/archive/v${version}.tar.gz";
+        sha256 = "1x4c2v8hnm9yi3fzjglfwd2brzn99v8zavgfczc5jfj30v3n555z";
       };
       notes = buildApp rec {
         appName = "notes";
@@ -72,20 +83,26 @@ let
       };
       ocsms = buildApp rec {
         appName = "ocsms";
-        version = "2.1.0";
+        version = "2.1.1";
         url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
-        sha256 = "19xgs82js4sdf6j9478vg9li7za7csvcaa1hbq9nmrq441sbxk9c";
+        sha256 = "0sgfbmy1c8rgzjvf9snc7rzgp8aqsc65zfwgi6qcsf2g6gam5n7a";
         installPhase = ''
           sed -i -e "/addScript.*devel/d" -e "s@//\(.*addScript.*app.min\)@\1@" templates/main.php
           mkdir -p $out
           cp -R . $out/
           '';
       };
+      passman = buildApp rec {
+        appName = "passman";
+        version = "2.2.1";
+        url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
+        sha256 = "064pq9d0pl3y1vcywpi19fg47zy7j4h0jaxy6jklwzwcrmzagbka";
+      };
       spreed = buildApp rec {
         appName = "spreed";
-        version = "5.0.0";
+        version = "5.0.2";
         url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
-        sha256 = "1d48mak1fnf1b28r2687yqamm4pxfg3qyxcj9ny31a6xg2cm0xa7";
+        sha256 = "0z9zhpkq485lhwirc2f04427rd47hzv0r8frz72dkrszb037qjvv";
       };
       tasks = buildApp rec {
         appName = "tasks";
@@ -96,82 +113,78 @@ let
     };
   in rec {
     varDir = "/var/lib/nextcloud";
-    config_php = writeText "config.php" ''
-      <?php
-      $CONFIG = array (
-        'instanceid' => '${env.instance_id}',
-        'datadirectory' => '/var/lib/nextcloud/',
-        'passwordsalt' => '${env.password_salt}',
-        'debug' => false,
-        'dbtype' => 'pgsql',
-        'version' => '15.0.0.10',
-        'dbname' => '${env.postgresql.database}',
-        'dbhost' => '${env.postgresql.socket}',
-        'dbtableprefix' => 'oc_',
-        'dbuser' => '${env.postgresql.user}',
-        'dbpassword' => '${env.postgresql.password}',
-        'installed' => true,
-        'maxZipInputSize' => 0,
-        'allowZipDownload' => true,
-        'forcessl' => true,
-        'theme' => ${"''"},
-        'maintenance' => false,
-        'trusted_domains' =>
-        array (
-          0 => 'cloud.immae.eu',
-        ),
-        'secret' => '${env.secret}',
-        'appstoreenabled' => false,
-        'appstore.experimental.enabled' => true,
-        'loglevel' => 0,
-        'trashbin_retention_obligation' => 'auto',
-        'htaccess.RewriteBase' => '/',
-        'mail_smtpmode' => 'sendmail',
-        'mail_smtphost' => '127.0.0.1',
-        'mail_smtpname' => ''',
-        'mail_smtppassword' => ''',
-        'mail_from_address' => 'owncloud',
-        'mail_smtpauth' => false,
-        'mail_domain' => 'immae.eu',
-        'memcache.local' => '\\OC\\Memcache\\APCu',
-        'memcache.locking' => '\\OC\\Memcache\\Redis',
-        'filelocking.enabled' => true,
-        'redis' =>
-        array (
-          'host' => '${env.redis.socket}',
-          'port' => 0,
-          'dbindex' => ${env.redis.db_index},
-        ),
-        'overwrite.cli.url' => 'https://cloud.immae.eu',
-        'ldapIgnoreNamingRules' => false,
-        'ldapProviderFactory' => '\\OCA\\User_LDAP\\LDAPProviderFactory',
-        'config_is_read_only' => true,
-      );
-      '';
-    config = stdenv.mkDerivation rec {
-      name = "nextcloud-config";
-      src = ./nextcloud-config;
-      phases = "installPhase";
-      installPhase = ''
-        mkdir -p $out
-        cp -r $src/* $out
-        cp ${config_php} $out/config.php
+    keys = [{
+      dest = "webapps/tools-nextcloud";
+      user = apache.user;
+      group = apache.group;
+      permissions = "0600";
+      text = ''
+        <?php
+        $CONFIG = array (
+          // FIXME: change this value when nextcloud starts getting slow
+          'instanceid' => '${env.instance_id}1',
+          'datadirectory' => '/var/lib/nextcloud/',
+          'passwordsalt' => '${env.password_salt}',
+          'debug' => false,
+          'dbtype' => 'pgsql',
+          'version' => '15.0.4.0',
+          'dbname' => '${env.postgresql.database}',
+          'dbhost' => '${env.postgresql.socket}',
+          'dbtableprefix' => 'oc_',
+          'dbuser' => '${env.postgresql.user}',
+          'dbpassword' => '${env.postgresql.password}',
+          'installed' => true,
+          'maxZipInputSize' => 0,
+          'allowZipDownload' => true,
+          'forcessl' => true,
+          'theme' => ${"''"},
+          'maintenance' => false,
+          'trusted_domains' => 
+          array (
+            0 => 'cloud.immae.eu',
+          ),
+          'secret' => '${env.secret}',
+          'appstoreenabled' => false,
+          'appstore.experimental.enabled' => true,
+          'loglevel' => 2,
+          'trashbin_retention_obligation' => 'auto',
+          'htaccess.RewriteBase' => '/',
+          'mail_smtpmode' => 'sendmail',
+          'mail_smtphost' => '127.0.0.1',
+          'mail_smtpname' => ''',
+          'mail_smtppassword' => ''',
+          'mail_from_address' => 'nextcloud',
+          'mail_smtpauth' => false,
+          'mail_domain' => 'tools.immae.eu',
+          'memcache.local' => '\\OC\\Memcache\\APCu',
+          'memcache.locking' => '\\OC\\Memcache\\Redis',
+          'filelocking.enabled' => true,
+          'redis' => 
+          array (
+            'host' => '${env.redis.socket}',
+            'port' => 0,
+            'dbindex' => ${env.redis.db_index},
+          ),
+          'overwrite.cli.url' => 'https://cloud.immae.eu',
+          'ldapIgnoreNamingRules' => false,
+          'ldapProviderFactory' => '\\OCA\\User_LDAP\\LDAPProviderFactory',
+        );
       '';
-    };
+    }];
     webRoot = stdenv.mkDerivation rec {
       name = "nextcloud-${version}";
-      version = "15.0.0";
+      version = "15.0.4";
 
       src = fetchurl {
         url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
-        sha256 = "0y7bk1588n5rmmranmmrkajh50074460hr4v052ahg9mf60wbc2v";
+        sha256 = "0xwg7p31y1pkjk1pzygh9shpqxnfkafrab52j7in7xblq53v0zgq";
       };
 
       installPhase = ''
         mkdir -p $out/
         cp -R . $out/
         rm -r $out/config
-        ln -sf ${config} $out/config
+        ln -sf ${varDir}/config $out/config
         ${builtins.concatStringsSep "\n" (
           lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/apps/${name}") apps
         )}
@@ -190,15 +203,19 @@ let
       text = ''
         install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
         install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
+        install -D -m 0644 -o ${apache.user} -g ${apache.group} ${./nextcloud-config}/* -t ${varDir}/config
+        install -D -m 0600 -o ${apache.user} -g ${apache.group} -T /var/secrets/webapps/tools-nextcloud ${varDir}/config/config.php
       '';
     };
-    apache = {
+    apache = rec {
       user = "wwwrun";
       group = "wwwrun";
       modules = [ "proxy_fcgi" ];
+      webappName = "tools_nextcloud";
+      root = "/run/current-system/webapps/${webappName}";
       vhostConf = ''
         SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
-        <Directory ${webRoot}>
+        <Directory ${root}>
           AcceptPathInfo On
           DirectoryIndex index.php
           Options FollowSymlinks
@@ -219,7 +236,7 @@ let
     };
     phpFpm = rec {
       basedir = builtins.concatStringsSep ":" (
-        [ webRoot varDir config ]
+        [ webRoot varDir ]
         ++ lib.attrsets.mapAttrsToList (name: value: value) apps);
       socket = "/var/run/phpfpm/nextcloud.sock";
       phpConfig = ''
@@ -240,7 +257,8 @@ let
         php_admin_value[output_buffering] = 0
         php_admin_value[max_execution_time] = 1800
         php_admin_value[zend_extension] = "opcache"
-        php_value[opcache.enable] = 1
+        ;already enabled by default?
+        ;php_value[opcache.enable] = 1
         php_value[opcache.enable_cli] = 1
         php_value[opcache.interned_strings_buffer] = 8
         php_value[opcache.max_accelerated_files] = 10000