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