+10
-10
flake.lock
+10
-10
flake.lock
···
256
},
257
"nixpkgs_2": {
258
"locked": {
259
-
"lastModified": 1767634882,
260
-
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=",
261
"owner": "nixos",
262
"repo": "nixpkgs",
263
-
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c",
264
"type": "github"
265
},
266
"original": {
267
"owner": "nixos",
268
-
"ref": "nixos-25.11",
269
"repo": "nixpkgs",
270
"type": "github"
271
}
···
354
"sqlite-lib-src": "sqlite-lib-src"
355
},
356
"locked": {
357
-
"lastModified": 1767767073,
358
-
"narHash": "sha256-BSZJ1TY5lGt7xNgFRtcKwYcSOI6VC2CHLfm7y/GgHwU=",
359
"ref": "refs/heads/master",
360
-
"rev": "6dc86ffbed5a290ca6a4890caa2dadea5c8b8a81",
361
-
"revCount": 1792,
362
"type": "git",
363
-
"url": "https://tangled.org/tangled.org/core"
364
},
365
"original": {
366
"type": "git",
367
-
"url": "https://tangled.org/tangled.org/core"
368
}
369
}
370
},
···
256
},
257
"nixpkgs_2": {
258
"locked": {
259
+
"lastModified": 1767379071,
260
+
"narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=",
261
"owner": "nixos",
262
"repo": "nixpkgs",
263
+
"rev": "fb7944c166a3b630f177938e478f0378e64ce108",
264
"type": "github"
265
},
266
"original": {
267
"owner": "nixos",
268
+
"ref": "nixos-unstable",
269
"repo": "nixpkgs",
270
"type": "github"
271
}
···
354
"sqlite-lib-src": "sqlite-lib-src"
355
},
356
"locked": {
357
+
"lastModified": 1767683698,
358
+
"narHash": "sha256-MFrfNmTKTdOOsyXUvvqPwH6zqvDZZpURnd7QdJkVOgU=",
359
"ref": "refs/heads/master",
360
+
"rev": "b31a2a3590fefc4c70817f94a20076df2428b4d3",
361
+
"revCount": 1791,
362
"type": "git",
363
+
"url": "https://tangled.org/@tangled.org/core"
364
},
365
"original": {
366
"type": "git",
367
+
"url": "https://tangled.org/@tangled.org/core"
368
}
369
}
370
},
+2
-2
flake.nix
+2
-2
flake.nix
-17
hosts/appview/services/nginx.nix
-17
hosts/appview/services/nginx.nix
···
7
recommendedOptimisation = true;
8
recommendedGzipSettings = true;
9
10
-
# bot blocking
11
-
appendHttpConfig = ''
12
-
map $http_user_agent $block_bot {
13
-
default 0;
14
-
~*PerplexityBot 1;
15
-
~*GPTBot 1;
16
-
~*ChatGPT-User 1;
17
-
~*CCBot 1;
18
-
~*anthropic-ai 1;
19
-
~*Claude-Web 1;
20
-
}
21
-
'';
22
-
23
streamConfig = ''
24
upstream knot-sailor {
25
server 94.237.110.185:22;
···
69
enableACME = true;
70
71
extraConfig = ''
72
-
if ($block_bot) {
73
-
return 403;
74
-
}
75
-
76
# Redirect www → bare domain
77
if ($host = www.tangled.org) {
78
return 301 https://tangled.org$request_uri;
···
7
recommendedOptimisation = true;
8
recommendedGzipSettings = true;
9
10
streamConfig = ''
11
upstream knot-sailor {
12
server 94.237.110.185:22;
···
56
enableACME = true;
57
58
extraConfig = ''
59
# Redirect www → bare domain
60
if ($host = www.tangled.org) {
61
return 301 https://tangled.org$request_uri;
-11
hosts/nixery/services/nginx.nix
-11
hosts/nixery/services/nginx.nix
···
1
-
{ tangled-pkgs, pkgs, ... }:
2
-
3
{
4
services.nginx = {
5
enable = true;
6
virtualHosts = {
7
-
"docs.tangled.org" = {
8
-
forceSSL = true;
9
-
enableACME = true;
10
-
root = "${tangled-pkgs.docs}";
11
-
locations."/" = {
12
-
tryFiles = "$uri $uri/ =404";
13
-
index = "index.html";
14
-
};
15
-
};
16
"nixery.tangled.sh" = {
17
forceSSL = true;
18
enableACME = true;