]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/websites/tools/commento/default.nix
Use attrs for secrets instead of lists
[perso/Immae/Config/Nix.git] / modules / private / websites / tools / commento / default.nix
1 { lib, pkgs, config, ... }:
2 let
3 cfg = config.myServices.websites.tools.commento;
4 env = config.myEnv.tools.commento;
5 webPort = "${host}:${port}";
6 port = toString env.listenPort;
7 host = "localhost";
8 postgresql_url = "postgres://${env.postgresql.user}:${env.postgresql.password}@localhost:${env.postgresql.port}/${env.postgresql.database}?sslmode=disable";
9 in
10 {
11 options.myServices.websites.tools.commento = {
12 enable = lib.mkEnableOption "Enable commento website";
13 };
14 config = lib.mkIf cfg.enable {
15 secrets.keys = {
16 "commento/env" = {
17 permissions = "0400";
18 text = ''
19 COMMENTO_ORIGIN=https://commento.immae.eu/
20 COMMENTO_PORT=${port}
21 COMMENTO_POSTGRES=${postgresql_url}
22 COMMENTO_FORBID_NEW_OWNERS=true
23 COMMENTO_BIND_ADDRESS=${host}
24 COMMENTO_GZIP_STATIC=true
25 COMMENTO_SMTP_HOST=${env.smtp.host}
26 COMMENTO_SMTP_PORT=${env.smtp.port}
27 COMMENTO_SMTP_USERNAME=${env.smtp.email}
28 COMMENTO_SMTP_PASSWORD=${env.smtp.password}
29 COMMENTO_SMTP_FROM_ADDRESS=${env.smtp.email}
30 '';
31 };
32 };
33
34 services.websites.env.tools.vhostConfs.commento = {
35 certName = "eldiron";
36 addToCerts = true;
37 hosts = [ "commento.immae.eu" ];
38 root = null;
39 extraConfig = [
40 ''
41 ProxyPass / http://${webPort}/
42 ProxyPassReverse / http://${webPort}/
43 ProxyPreserveHost On
44 ''
45 ];
46 };
47 systemd.services.commento = {
48 description = "Commento";
49 wantedBy = [ "multi-user.target" ];
50 requires = ["postgresql.service"];
51 after = ["network.target" "postgresql.service"];
52 serviceConfig = {
53 User = "wwwrun";
54 ExecStart = "${pkgs.commento}/commento";
55 EnvironmentFile = config.secrets.fullPaths."commento/env";
56 };
57 };
58 };
59 }