1{
2 config,
3 lib,
4 ...
5}: let
6 name = "tangled-knot";
7 cfg = config.myNixOS.services.${name};
8
9 network = config.mySnippets.aylac-top;
10 service = network.networkMap.${name};
11in {
12 options.myNixOS.services.${name} = {
13 enable = lib.mkEnableOption "${name} server";
14 autoProxy = lib.mkOption {
15 default = true;
16 example = false;
17 description = "${name} auto proxy";
18 type = lib.types.bool;
19 };
20 };
21
22 config = lib.mkIf cfg.enable {
23 services = {
24 caddy.virtualHosts = lib.mkIf cfg.autoProxy {
25 "${service.vHost}" = {
26 extraConfig = ''
27 encode gzip zstd
28 reverse_proxy ${service.hostName}:${toString service.port}
29 '';
30 };
31
32 "ssh.${service.vHost}" = {
33 extraConfig = ''
34 encode gzip zstd
35 reverse_proxy ${service.hostName}:22
36 '';
37 };
38 };
39
40 tangled-knot = {
41 enable = true;
42 openFirewall = true;
43 stateDir = "/home/git";
44 server = {
45 owner = "did:plc:3c6vkaq7xf5kz3va3muptjh5";
46 hostname = service.vHost;
47 listenAddr = "0.0.0.0:${toString service.port}";
48 };
49 };
50 };
51 };
52}