]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - virtual/modules/websites/tools/tools/wallabag.nix
Put some database variables to environment
[perso/Immae/Config/Nix.git] / virtual / modules / websites / tools / tools / wallabag.nix
index 92787b8dc37ba76fb1045b4ae66ba35f2fb13de5..4bda8089a5d3df7c196a25e4f5f71209478defaf 100644 (file)
@@ -1,21 +1,17 @@
-{ stdenv, fetchurl, writeText, checkEnv, phpPackages, php, which }:
+{ stdenv, fetchurl, writeText, env, composerEnv, phpPackages, php, which }:
 let
   wallabag = rec {
     varDir = "/var/lib/wallabag";
-    parameters =
-      assert checkEnv "NIXOPS_WALLABAG_SQL_PASSWORD";
-      assert checkEnv "NIXOPS_WALLABAG_SECRET";
-      assert checkEnv "NIXOPS_WALLABAG_LDAP_PASSWORD";
-    writeText "parameters.yml" ''
+    parameters = writeText "parameters.yml" ''
       # This file is auto-generated during the composer install
       parameters:
           database_driver: pdo_pgsql
           database_driver_class: Wallabag\CoreBundle\Doctrine\DBAL\Driver\CustomPostgreSQLDriver
-          database_host: db-1.immae.eu
-          database_port: null
-          database_name: webapps
-          database_user: wallabag
-          database_password: ${builtins.getEnv "NIXOPS_WALLABAG_SQL_PASSWORD"}
+          database_host: ${env.postgresql.socket}
+          database_port: ${env.postgresql.port}
+          database_name: ${env.postgresql.database}
+          database_user: ${env.postgresql.user}
+          database_password: ${env.postgresql.password}
           database_path: null
           database_table_prefix: wallabag_
           database_socket: null
@@ -26,7 +22,7 @@ let
           mailer_user: null
           mailer_password: null
           locale: fr
-          secret: ${builtins.getEnv "NIXOPS_WALLABAG_SECRET"}
+          secret: ${env.secret}
           twofactor_auth: true
           twofactor_sender: wallabag@immae.eu
           fosuser_registration: false
@@ -38,10 +34,10 @@ let
           rabbitmq_user: guest
           rabbitmq_password: guest
           rabbitmq_prefetch_count: 10
-          redis_scheme: tcp
-          redis_host: localhost
-          redis_port: 6379
-          redis_path: null
+          redis_scheme: unix
+          redis_host: null
+          redis_port: null
+          redis_path: ${env.redis.socket}
           redis_password: null
           sites_credentials: {  }
           ldap_enabled: true
@@ -52,7 +48,7 @@ let
           ldap_bind_requires_dn: true
           ldap_base: 'dc=immae,dc=eu'
           ldap_manager_dn: 'cn=wallabag,ou=services,dc=immae,dc=eu'
-          ldap_manager_pw: ${builtins.getEnv "NIXOPS_WALLABAG_LDAP_PASSWORD"}
+          ldap_manager_pw: ${env.ldap.password}
           ldap_filter: '(&(memberOf=cn=users,cn=wallabag,ou=services,dc=immae,dc=eu))'
           ldap_admin_filter: '(&(memberOf=cn=admins,cn=wallabag,ou=services,dc=immae,dc=eu)(uid=%s))'
           ldap_username_attribute: uid
@@ -60,30 +56,55 @@ let
           ldap_name_attribute: cn
           ldap_enabled_attribute: null
       '';
-    webappDir = stdenv.mkDerivation rec {
+    webappDir = composerEnv.buildPackage rec {
+      packages = {
+        "fr3d/ldap-bundle" = {
+          targetDir = "";
+          src = composerEnv.buildZipPackage {
+            name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475";
+            src = fetchurl {
+              url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475;
+              sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc";
+            };
+          };
+        };
+        "zendframework/zend-ldap" = {
+          targetDir = "";
+          src = composerEnv.buildZipPackage {
+            name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49";
+            src = fetchurl {
+              url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49;
+              sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9";
+            };
+          };
+        };
+      };
+      noDev = true;
+      doRemoveVendor = false;
       # Beware when upgrading, I probably messed up with the migrations table
       # (due to a psql bug in wallabag)
-      version = "2.3.2";
+      version = "2.3.6";
       name = "wallabag-${version}";
       src = fetchurl {
         url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz";
-        sha256 = "17yczdvgl43j6wa7hksxi2b51afvyd56vdya6hbbv68iiba4jyh4";
+        sha256 = "0m0dy3r94ks5pfxyb9vbgrsm0vrwdl3jd5wqwg4f5vd107lq90q1";
       };
+      unpackPhase = ''
+        unpackFile "$src"
+        sourceRoot=${version}
+        src=$PWD/${version}
+        '';
       patches = [ ./wallabag_ldap.patch ];
-      dontBuild = "true";
-      installPhase = ''
-        cp -a . $out
-        cd $out
-        export SYMFONY_ENV=prod
-        php -d memory_limit=-1 ${phpPackages.composer}/libexec/composer/composer.phar require --update-no-dev -o --prefer-dist fr3d/ldap-bundle
-        rm -rf web/assets var/cache app/config/parameters.yml data
-        mv var var_old
+      preInstall = ''
+        export SYMFONY_ENV="prod"
+      '';
+      postInstall = ''
+        rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data
         ln -sf ${parameters} app/config/parameters.yml
-        ln -sf ../../../../../${varDir}/var var
+        ln -sf ../../../../../../${varDir}/var/{cache,logs,sessions} var
         ln -sf ../../../../../${varDir}/data data
         ln -sf ../../../../../../${varDir}/assets web/assets
       '';
-      buildInputs = [ php phpPackages.composer ];
     };
     activationScript = ''
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
@@ -91,20 +112,20 @@ let
       if [ ! -f "${varDir}/currentWebappDir" -o \
           "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
         pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
         $wrapperDir/sudo -u wwwrun ./bin/console --env=prod cache:clear
+        $wrapperDir/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
         popd > /dev/null
         echo -n "${webappDir}" > ${varDir}/currentWebappDir
       fi
       '';
     webRoot = "${webappDir}/web";
+    # Domain migration: Table wallabag_entry contains whole
+    # https://tools.immae.eu/wallabag domain name in preview_picture
     apache = {
       user = "wwwrun";
       group = "wwwrun";
       modules = [ "proxy_fcgi" ];
       vhostConf = ''
-        # FIXME
-        Alias /assets "${varDir}/assets"
         Alias /wallabag "${webRoot}"
         <Directory "${webRoot}">
           AllowOverride None