about summary refs log tree commit diff
path: root/ops/modules/www/base.nix
blob: 375c1a6b76a49519b3d833ecf65c1043214628f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{ config, pkgs, ... }:

{
  config = {
    security.acme = {
      acceptTerms = true;
      defaults.email = "letsencrypt@tvl.su";
    };

    services.nginx = {
      enable = true;
      enableReload = true;

      recommendedTlsSettings = true;
      recommendedGzipSettings = true;
      recommendedProxySettings = true;

      commonHttpConfig = ''
        log_format json_combined escape=json
        '{'
            '"remote_addr":"$remote_addr",'
            '"method":"$request_method",'
            '"host":"$host",'
            '"uri":"$request_uri",'
            '"status":$status,'
            '"request_size":$request_length,'
            '"response_size":$body_bytes_sent,'
            '"response_time":$request_time,'
            '"referrer":"$http_referer",'
            '"user_agent":"$http_user_agent"'
        '}';

        access_log syslog:server=unix:/dev/log,nohostname json_combined;
      '';

      appendHttpConfig = ''
        add_header Permissions-Policy "interest-cohort=()";
      '';
    };

    # NixOS 20.03 broke nginx and I can't be bothered to debug it
    # anymore, all solution attempts have failed, so here's a
    # brute-force fix.
    #
    # TODO(tazjin): Find a link to the upstream issue and see if
    # they've sorted it after ~20.09
    systemd.services.fix-nginx = {
      script = "${pkgs.coreutils}/bin/chown -f -R nginx: /var/spool/nginx /var/cache/nginx";

      serviceConfig = {
        User = "root";
        Type = "oneshot";
      };
    };

    systemd.timers.fix-nginx = {
      wantedBy = [ "multi-user.target" ];
      timerConfig = {
        OnCalendar = "minutely";
      };
    };
  };
}