summaryrefslogtreecommitdiff
path: root/host/software/server/website.nix
blob: 8248a0be38f12878021a5b9355247b7d9267b27c (plain)
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
64
{ pkgs, ... }:

{
  users.extraUsers.public = {
    isNormalUser = true;
    uid          = 2000;
    shell        = pkgs.fish;
  };

  services.nginx.user = "public";

  systemd.services.nginx.serviceConfig.ProtectHome = false;

  # `public` generates websites using their custom derivations via `nix-build`
  services.nginx.virtualHosts = let

    default = locations: {
      inherit locations;
      addSSL     = true;
      enableACME = true;
    };

    website = sub: default {
      "/".root = "/home/public/${sub}/result";
      "/".extraConfig = ''
        location ~* \.(?:html?|xml)$ {
          expires -1;
        }
      '';
    };

    proxy = server: target: {
      proxyPass = server;
      extraConfig = ''
        expires off;
        return ${target};
      '';
    };
  in {
    "kummerlaender.eu"        = website "overview";
    "blog.kummerlaender.eu"   = website "blog";
    "blip.kummerlaender.eu"   = website "blip";
    "tree.kummerlaender.eu"   = website "tree";
    "static.kummerlaender.eu" = website "static" // {
      extraConfig = ''
        add_header Access-Control-Allow-Origin *;
      '';
    };

    "literatelb.org"      = let
      sub = "literatelb";
    in default {
      "/".root = "/home/public/${sub}/result";
      "/".extraConfig = ''
        location ~* \.(?:html?|xml)$ {
          expires -1;
        }
        location /tangle/ {
          autoindex on;
        }
      '';
    };
  };
}