@cryptotaxi247 / infra / commits / a02a620f

Mirror the flake registry to https://channels.nixos.org/flake-registry.json

Eelco Dolstra committed Jun 23, 2022 at 23:38 UTC a02a620f56cee88299d479f51676ca3f2a6c4a82
1 file changed +36 -21
terraform/channels.tf
+36 -21
@@ -96,23 +96,22 @@ resource "fastly_service_v1" "channels" {
96 backend {
97 address = local.channels_backend
98 auto_loadbalance = false
99 - between_bytes_timeout = 10000
99 connect_timeout = 5000
101 - error_threshold = 0
102 - first_byte_timeout = 15000
103 - max_conn = 200
100 name = local.channels_backend
101 override_host = local.channels_backend
106 - port = 80
107 - use_ssl = false
108 - weight = 100
102 + request_condition = "not-flake-registry"
103 }
104
111 - condition {
112 - name = "Generated by synthetic response for 404 page"
113 - priority = 0
114 - statement = "beresp.status == 404"
115 - type = "CACHE"
105 + backend {
106 + # https://github.com/NixOS/flake-registry/raw/master/flake-registry.json
107 + name = "flake-registry"
108 + address = "raw.githubusercontent.com"
109 + auto_loadbalance = false
110 + override_host = "raw.githubusercontent.com"
111 + port = 443
112 + use_ssl = true
113 + ssl_check_cert = false
114 + request_condition = "flake-registry"
115 }
116
117 condition {
@@ -122,6 +121,18 @@ resource "fastly_service_v1" "channels" {
121 type = "REQUEST"
122 }
123
124 + condition {
125 + name = "not-flake-registry"
126 + statement = "req.url != \"/NixOS/flake-registry/master/flake-registry.json\""
127 + type = "REQUEST"
128 + }
129 +
130 + condition {
131 + name = "flake-registry"
132 + statement = "req.url == \"/NixOS/flake-registry/master/flake-registry.json\""
133 + type = "REQUEST"
134 + }
135 +
136 domain {
137 name = local.channels_domain
138 }
@@ -166,15 +177,6 @@ resource "fastly_service_v1" "channels" {
177 source = "\"*\""
178 }
179
169 - response_object {
170 - cache_condition = "Generated by synthetic response for 404 page"
171 - content = "404"
172 - content_type = "text/html"
173 - name = "Generated by synthetic response for 404 page"
174 - response = "Not Found"
175 - status = 404
176 - }
177 -
180 snippet {
181 content = "set req.url = querystring.remove(req.url);"
182 name = "Remove all query strings"
@@ -190,12 +192,25 @@ resource "fastly_service_v1" "channels" {
192 set beresp.grace = 0s;
193 set beresp.cacheable = true;
194 }
195 + if (req.url ~ "/flake-registry.json") {
196 + set beresp.stale_if_error = 1000000s;
197 + }
198 EOT
199 name = "Change 403 from S3 to 404"
200 priority = 100
201 type = "fetch"
202 }
203
204 + snippet {
205 + name = "flake-registry"
206 + content = <<-EOT
207 + if (req.url == "/flake-registry.json") {
208 + set req.url = "/NixOS/flake-registry/master/flake-registry.json";
209 + }
210 + EOT
211 + type = "recv"
212 + }
213 +
214 s3logging {
215 name = "${local.channels_domain}-to-s3"
216 bucket_name = module.fastlylogs.bucket_name