]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - nixops/modules/websites/emilia/default.nix
Start moving websites configuration to modules
[perso/Immae/Config/Nix.git] / nixops / modules / websites / emilia / default.nix
1 { lib, pkgs, config, myconfig, ... }:
2 let
3 cfg = config.services.myWebsites.Emilia;
4 env = myconfig.env.websites.emilia;
5 varDir = "/var/lib/moodle";
6 siteDir = ./moodle;
7 webappName = "emilia_moodle";
8 root = "/run/current-system/webapps/${webappName}";
9 # php_admin_value[upload_max_filesize] = 50000000
10 # php_admin_value[post_max_size] = 50000000
11 configFile = ''
12 <?php // Moodle configuration file
13
14 unset($CFG);
15 global $CFG;
16 $CFG = new stdClass();
17
18 $CFG->dbtype = 'pgsql';
19 $CFG->dblibrary = 'native';
20 $CFG->dbhost = '${env.postgresql.host}';
21 $CFG->dbname = '${env.postgresql.database}';
22 $CFG->dbuser = '${env.postgresql.user}';
23 $CFG->dbpass = '${env.postgresql.password}';
24 $CFG->prefix = 'mdl_';
25 $CFG->dboptions = array (
26 'dbpersist' => 0,
27 'dbport' => '${env.postgreesql.port}',
28 'dbsocket' => '${env.postgresql.password}',
29 );
30
31 $CFG->wwwroot = 'https://www.saison-photo.org';
32 $CFG->dataroot = '${varDir}';
33 $CFG->admin = 'admin';
34
35 $CFG->directorypermissions = 02777;
36
37 require_once(__DIR__ . '/lib/setup.php');
38
39 // There is no php closing tag in this file,
40 // it is intentional because it prevents trailing whitespace problems!
41 '';
42 in {
43 options.services.myWebsites.Emilia = {
44 production = {
45 enable = lib.mkEnableOption "enable Emilia's website";
46 };
47 };
48
49 config = lib.mkIf cfg.production.enable {
50 security.acme.certs."emilia" = config.services.myCertificates.certConfig // {
51 domain = "saison-photo.org";
52 extraDomains = {
53 "www.saison-photo.org" = null;
54 };
55 };
56
57 system.activationScripts.emilia = ''
58 install -m 0755 -o wwwrun -g wwwrun -d ${varDir}
59 '';
60 system.extraSystemBuilderCmds = ''
61 mkdir -p $out/webapps
62 ln -s ${siteDir} $out/webapps/${webappName}
63 '';
64 services.websites.production.vhostConfs.emilia = {
65 certName = "emilia";
66 hosts = [ "saison-photo.org" "www.saison-photo.org" ];
67 root = root;
68 extraConfig = [
69 ''
70 <Directory ${root}>
71 DirectoryIndex pause.html
72 Options Indexes FollowSymLinks MultiViews Includes
73 Require all granted
74 </Directory>
75 ''
76 ];
77 };
78 };
79 }