grace/dots
dotfiles/nix configs
git clone https://git.gae.moe/grace/dots
4db52e6
wafrn-testing
1{ config , ...} : 2 3let 4tailnet = import ../tailnet.nix ; 5in 6{ 7networking . firewall . allowedTCPPorts = [ 8# 22 925565 1080 11443 12]; 13 14# systemd.sockets.git-ssh-proxy = { 15# wantedBy = [ "sockets.target" ]; 16# listenStreams = [ "0.0.0.0:22" ]; 17# }; 18 19# systemd.services.git-ssh-proxy = { 20# description = "TCP proxy for Git SSH"; 21# requires = [ "git-ssh-proxy.socket" ]; 22# serviceConfig = { 23# ExecStart = "${config.systemd.package}/lib/systemd/systemd-socket-proxyd ${tailnet.dijkstra-git}:22"; 24# DynamicUser = true; 25# }; 26# }; 27 28systemd . sockets . minecraft-proxy = { 29wantedBy = [ "sockets.target" ]; 30listenStreams = [ "0.0.0.0:25565" ]; 31}; 32 33systemd . services . minecraft-proxy = { 34description = "TCP proxy for Minecraft" ; 35requires = [ "minecraft-proxy.socket" ]; 36serviceConfig = { 37ExecStart = " ${ config . systemd . package } /lib/systemd/systemd-socket-proxyd ${ tailnet . dijkstra } :25565" ; 38DynamicUser = true ; 39}; 40}; 41 42services . caddy = { 43enable = true ; 44 45extraConfig = '' 46# TODO: make it nice 47(offline_page) { 48handle_errors { 49@offline expression {err.status_code} in [502, 503, 504] 50 51handle @offline { 52header Content-Type "text/html; charset=utf-8" 53header Cache-Control "no-store" 54respond <<HTML 55<!doctype html> 56<html lang="en"> 57<head> 58<title>Service temporarily offline</title> 59</head> 60<body> 61<main> 62<h1>Page Down</h1> 63<p>If you are seeing this, the backend server is offline. It should be back up soon so check again later.</p> 64<p class="status">Error {err.status_code}</p> 65</main> 66</body> 67</html> 68HTML {err.status_code} 69} 70 71handle { 72respond "{err.status_code} — {err.status_text}" {err.status_code} 73} 74} 75} 76'' ; 77 78virtualHosts = 79builtins . mapAttrs 80( 81_ :virtualHost : 82virtualHost 83// { 84extraConfig = '' 85import offline_page 86${ virtualHost . extraConfig } 87'' ; 88} 89) 90{ 91"map.mc.gae.moe" . extraConfig = '' 92reverse_proxy ${ tailnet . dijkstra } :8101 93'' ; 94 95"fin.gae.moe" . extraConfig = '' 96request_body { 97max_size 10GB 98} 99 100reverse_proxy ${ tailnet . dijkstra } :8096 { 101transport http { 102read_buffer 16KiB 103write_buffer 16KiB 104dial_timeout 10s 105response_header_timeout 300s 106keepalive 60s 107} 108} 109'' ; 110 111"files.gae.moe" . extraConfig = '' 112request_body { 113max_size 10GB 114} 115 116reverse_proxy ${ tailnet . dijkstra } :8080 { 117transport http { 118read_buffer 16KiB 119write_buffer 16KiB 120dial_timeout 10s 121response_header_timeout 300s 122keepalive 60s 123} 124} 125'' ; 126 127"img.gae.moe" . extraConfig = '' 128reverse_proxy ${ tailnet . dijkstra } :2283 129'' ; 130 131"git.gae.moe, git.tools.grace.pink" . extraConfig = '' 132request_body { 133max_size 10GB 134} 135 136reverse_proxy http:// ${ tailnet . dijkstra-git } :3000 { 137flush_interval -1 138 139header_up X-Real-IP {remote_host} 140header_up X-Forwarded-For {remote_host} 141header_up X-Forwarded-Proto {scheme} 142 143transport http { 144read_buffer 16KiB 145write_buffer 16KiB 146dial_timeout 10s 147response_header_timeout 300s 148keepalive 60s 149} 150} 151'' ; 152 153"ci.gae.moe" . extraConfig = '' 154reverse_proxy ${ tailnet . dijkstra-git } :8000 155'' ; 156 157"knot.gae.moe" . extraConfig = '' 158reverse_proxy ${ tailnet . dijkstra-git } :5555 159'' ; 160 161"books.gae.moe" . extraConfig = '' 162reverse_proxy localhost:6822 163'' ; 164 165"term.gae.moe" . extraConfig = '' 166reverse_proxy ${ tailnet . dijkstra } :8082 { 167transport http { 168tls_insecure_skip_verify 169} 170} 171'' ; 172 173"pds.gae.moe, grace.pds.gae.moe, art.pds.gae.moe" . extraConfig = '' 174encode gzip 175 176request_body { 177max_size 10GB 178} 179 180handle /xrpc/* { 181reverse_proxy http:// ${ tailnet . lee } :8642 { 182header_up Host {host} 183header_up X-Real-IP {remote_host} 184header_up X-Forwarded-For {remote_host} 185header_up X-Forwarded-Proto {scheme} 186header_up Upgrade {http.request.header.Upgrade} 187header_up Connection "Upgrade" 188flush_interval -1 189 190transport http { 191response_header_timeout 86400s 192keepalive 32s 193keepalive_idle_conns 32 194} 195} 196} 197 198handle /oauth/* { 199reverse_proxy http:// ${ tailnet . lee } :8642 { 200header_up Host {host} 201header_up X-Real-IP {remote_host} 202header_up X-Forwarded-For {remote_host} 203header_up X-Forwarded-Proto {scheme} 204} 205} 206 207handle /.well-known/webfinger { 208rewrite * /helpers/webfinger 209reverse_proxy https://atlogin.net 210} 211 212handle { 213reverse_proxy http:// ${ tailnet . lee } :8642 214} 215'' ; 216}; 217}; 218}