about summary refs log tree commit diff
path: root/ops/modules/www/cs.tvl.fyi.nix
blob: 9555acf9ac470208beaeac4a3f25c792791ad586 (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
64
65
66
# This configuration redirects from the previous Sourcegraph instance to
# livegrep/cgit where appropriate.
{ config, ... }:

{
  imports = [
    ./base.nix
  ];

  config = {
    services.nginx.virtualHosts."cs.tvl.fyi" = {
      serverName = "cs.tvl.fyi";
      serverAliases = [ "cs.tvl.su" ];
      enableACME = true;
      forceSSL = true;

      extraConfig = ''
        set $lineno "";

        # depot root
        location = /depot {
            return 301 https://code.tvl.fyi/tree/;
        }

        # folder/file on canon
        location ~ ^/depot/-/(blob|tree)/([^\s]*)$ {
            set $path $2;
            if ($args ~ ^L(\d+)(-\d+)?$) {
                set $lineno "#n$1";
            }

            return 302 https://code.tvl.fyi/tree/$path$lineno;
        }

        # folder/file on specific commit
        location ~ ^/depot@([a-f0-9]+)/-/(blob|tree)/([^\s]*)$ {
            set $commit $1;
            set $path $3;

            if ($args ~ ^L(\d+)(-\d+)?$) {
                set $lineno "#n$1";
            }

            return 302 https://code.tvl.fyi/tree/$path?id=$commit$lineno;
        }

        # commit info
        location ~ ^/depot/-/commit/([a-f0-9]+)$ {
            set $commit $1;
            return 302 https://code.tvl.fyi/commit/?id=$commit;
        }

        # search handler
        # This only redirects to the new search, it doesn't try to parse and
        # rewrite the query.
        location /search {
            return 302 https://grep.tvl.fyi/search;
        }

        location / {
            return 404 "TVL code search has moved to grep.tvl.fyi and we could not figure out how to rewrite your query. Sorry!";
        }
      '';
    };
  };
}