feat(youko): add pull-through cache for two Nix upstreams (#499)

Run nginx on youko as a loopback pull-through HTTP cache for
cache.nixos.org and cache.numtide.com, exposed by Caddy at
https://nix-cache.writefor.fun.

Assisted-by: DeepSeek Harness (deepseek-flash)
This commit is contained in:
ryan4yin | 二花 authored and GitHub committed 2026-11-01 18:27:43 +08:00
1 parent 9fe86de51d
commit 58d1af8f9d
9 files changed
+136 -8

No files matched your search

@@ -0,0 +1,11 @@
{
nginxEnabled = true;
caddyVhostExists = true;
ustcRemainsFirst = true;
nixosProxyConfigured = true;
numtideProxyConfigured = true;
numtideDirectFallback = true;
cacheLivesOnDataVolume = true;
nixosUpstream = "https://cache.nixos.org/";
numtideUpstream = "https://cache.numtide.com/";
}
@@ -0,0 +1,21 @@
{
lib,
outputs,
...
}:
let
cfg = outputs.nixosConfigurations.youko.config;
nginx = cfg.services.nginx;
substituters = cfg.nix.settings.substituters;
in
{
nginxEnabled = nginx.enable;
caddyVhostExists = cfg.services.caddy.virtualHosts ? "nix-cache.writefor.fun";
ustcRemainsFirst = builtins.head substituters == "https://mirrors.ustc.edu.cn/nix-channels/store";
nixosProxyConfigured = builtins.elem "https://nix-cache.writefor.fun/cache.nixos.org" substituters;
numtideProxyConfigured = builtins.elem "https://nix-cache.writefor.fun/cache.numtide.com" substituters;
numtideDirectFallback = builtins.elem "https://cache.numtide.com" substituters;
cacheLivesOnDataVolume = lib.hasInfix "/data/apps/nix-cache-proxy" nginx.appendHttpConfig;
nixosUpstream = nginx.virtualHosts."nix-cache-proxy".locations."/cache.nixos.org/".proxyPass;
numtideUpstream = nginx.virtualHosts."nix-cache-proxy".locations."/cache.numtide.com/".proxyPass;
}