]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/websites/emilia/moodle.nix
Refactor websites
[perso/Immae/Config/Nix.git] / modules / private / websites / emilia / moodle.nix
diff --git a/modules/private/websites/emilia/moodle.nix b/modules/private/websites/emilia/moodle.nix
new file mode 100644 (file)
index 0000000..d49faf5
--- /dev/null
@@ -0,0 +1,69 @@
+{ lib, pkgs, config,  ... }:
+let
+  cfg = config.myServices.websites.emilia.moodle;
+  env = config.myEnv.websites.emilia;
+  varDir = "/var/lib/emilia_moodle";
+  siteDir = ./moodle;
+  webappName = "emilia_moodle";
+  webappdir = config.services.websites.webappDirsPaths.emilia_moodle;
+  # php_admin_value[upload_max_filesize] = 50000000
+  # php_admin_value[post_max_size] = 50000000
+  configFile = ''
+    <?php  // Moodle configuration file
+
+    unset($CFG);
+    global $CFG;
+    $CFG = new stdClass();
+
+    $CFG->dbtype    = 'pgsql';
+    $CFG->dblibrary = 'native';
+    $CFG->dbhost    = '${env.postgresql.host}';
+    $CFG->dbname    = '${env.postgresql.database}';
+    $CFG->dbuser    = '${env.postgresql.user}';
+    $CFG->dbpass    = '${env.postgresql.password}';
+    $CFG->prefix    = 'mdl_';
+    $CFG->dboptions = array (
+      'dbpersist' => 0,
+      'dbport' => '${env.postgreesql.port}',
+      'dbsocket' => '${env.postgresql.password}',
+    );
+
+    $CFG->wwwroot   = 'https://www.saison-photo.org';
+    $CFG->dataroot  = '${varDir}';
+    $CFG->admin     = 'admin';
+
+    $CFG->directorypermissions = 02777;
+
+    require_once(__DIR__ . '/lib/setup.php');
+
+    // There is no php closing tag in this file,
+    // it is intentional because it prevents trailing whitespace problems!
+    '';
+  apacheUser = config.services.httpd.Prod.user;
+  apacheGroup = config.services.httpd.Prod.group;
+in {
+  options.myServices.websites.emilia.moodle.enable = lib.mkEnableOption "enable Emilia's website";
+
+  config = lib.mkIf cfg.enable {
+    services.duplyBackup.profiles.emilia_moodle.rootDir = varDir;
+    system.activationScripts.emilia_moodle = ''
+      install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${varDir}
+      '';
+    services.websites.webappDirs.emilia_moodle = siteDir;
+    services.websites.env.production.vhostConfs.emilia_moodle = {
+      certName     = "emilia";
+      certMainHost = "saison-photo.org";
+      hosts        = [ "saison-photo.org" "www.saison-photo.org" ];
+      root         = webappdir;
+      extraConfig  = [
+        ''
+        <Directory ${webappdir}>
+          DirectoryIndex pause.html
+          Options Indexes FollowSymLinks MultiViews Includes
+          Require all granted
+        </Directory>
+          ''
+      ];
+    };
+  };
+}