all repos — nixfiles @ 7fb219076baa9105e256d6e00d7175fe0fe4e7a4

System and user configuration, managed by nix and home-manager

system/settings/dev.nix (view raw)

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
{
  config,
  lib,
  ...
}:
with lib;

let
  cfg = config.local.web;
in
{
  options.local.web = {
    enable = mkEnableOption "Local configuration of caddy";

    projectRoot = mkOption {
      default = "/home/alan/projects";
      type = types.str;
      description = "Where projects are stored";
    };
  };

  config = mkIf cfg.enable {
    services.caddy = {
      enable = true;
      virtualHosts =
        let
          local_tls = ''
            tls {
              issuer internal {
                ca local
              }
            }
          '';
        in
        {
          "localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              ${local_tls}
              acme_server {
                allow {
                  domains *.test *.localhost
                }
              }
            '';
          };
          "alin.localhost" = {
            logFormat = "output discard";
            serverAliases = [
              "alin.test"
              "alanpearce.test"
              "alanpearce.localhost"
            ];
            extraConfig = ''
              ${local_tls}
              reverse_proxy http://localhost:8080 {
                transport http {
                  dial_timeout 1s
                  compression off
                }
              }
            '';
          };
          "elgit.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              ${local_tls}
              reverse_proxy http://localhost:5555 {
                transport http {
                   dial_timeout 1s
                   compression off
                }
              }
            '';
          };
          "searchix.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              handle_errors {
                rewrite * /error.html
                templates
                file_server
              }
              handle {
                reverse_proxy http://localhost:3000 {
                  transport http {
                    dial_timeout 1s
                    compression off
                  }
                }
              }
            '';
          };
          "perplexica.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              reverse_proxy http://localhost:8338 {
                transport http {
                  dial_timeout 1s
                  compression off
                }
              }
            '';
          };
          "auth.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              reverse_proxy http://localhost:8082
            '';
          };
          "xhain.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              root * /Users/alan/projects/github.com/xHain-hackspace/xhain-website/public/
              file_server
            '';
          };
          "hugo.localhost" = {
            logFormat = "output discard";
            extraConfig = ''
              reverse_proxy http://localhost:1313 {
                transport http {
                  dial_timeout 1s
                  compression off
                }
              }
            '';
          };
        };
    };

  };
}