This commit is contained in:
2026-04-29 00:16:31 +03:00
parent 7d5b12ba34
commit 7a9f10ffb5
15 changed files with 248 additions and 145 deletions
+73
View File
@@ -0,0 +1,73 @@
#!/usr/bin/env bash
SUBSTITUTERS=(
"https://cache.garnix.io"
"https://cache.m7.rs"
"https://cache.nixos.org"
"https://cache.soopy.moe"
"https://chaotic-nyx.cachix.org"
"https://colmena.cachix.org"
"https://hyprland.cachix.org"
"https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store"
"https://mirrors.ustc.edu.cn/nix-channels/store"
"https://nix-community.cachix.org"
"https://nix-gaming.cachix.org"
"https://nixos-cache-proxy.cofob.dev"
"https://nixos.snix.store"
"https://nixos.tvix.store"
)
TEST_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
clean_url() {
echo "$1" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
}
check_speed() {
local url=$(clean_url "$1")
local cache_info=$(curl -s -o /dev/null -w "%{http_code},%{time_total}" -L "${url}/nix-cache-info" --max-time 10 --insecure)
IFS=',' read -r code time_info <<< "$cache_info"
if [[ "$code" == "200" ]]; then
echo -e "\033[1;32m✓ nix-cache-info: ${time_info}s\033[0m"
local narinfo_time=$(curl -s -o /dev/null -w "%{time_total}" -L "${url}/${TEST_HASH}.narinfo" --max-time 10 --insecure)
echo -e " .narinfo: \033[1;33m${narinfo_time}s\033[0m"
local nar_time=$(curl -s -o /dev/null -w "%{time_total}" -L "${url}/nar/${TEST_HASH}.nar.xz" --max-time 10 --insecure)
echo -e " .nar.xz: \033[1;33m${nar_time}s\033[0m"
local speed=$(curl -s -o /dev/null -w "%{speed_download}" -L "${url}/nix-cache-info" --max-time 10 --insecure)
echo -e " СКОРОСТЬ: \033[1;36m$(numfmt --to=iec-i --suffix=B/s $speed | sed 's/Bi *//')\033[0m"
return 0
else
echo -e "\033[1;31m✗ nix-cache-info: $code (${time_info}s)\033[0m"
return 1
fi
}
main() {
echo "🚀 Тест скорости Nix Substituters ($(date '+%H:%M:%S'))"
echo "=============================================="
local working=()
for url in "${SUBSTITUTERS[@]}"; do
local clean_url=$(clean_url "$url")
echo -e "\n\033[1;34m=== $clean_url ===\033[0m"
if check_speed "$url"; then
working+=("$clean_url")
fi
echo "----------------------------------------"
done
echo -e "\n\033[1;36m🏆 РЕКОМЕНДУЕМЫЙ ПОРЯДОК (по скорости):\033[0m"
printf 'nix.settings.substituters = [\n'
for url in "${working[@]}"; do
printf ' "%s"\n' "$url"
done
printf '];\n'
}
main