74 lines
2.3 KiB
Bash
74 lines
2.3 KiB
Bash
#!/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
|