mirror of
https://github.com/andwati/dotfiles.git
synced 2026-10-18 11:02:53 +00:00
Adds a TUI-driven, rollback-capable installer (install/install.sh + install/modules/*.sh) covering JS/Python/systems toolchains, dev tooling, browsers, chat apps, GNOME extras, and misc setup (wakatime key, ssh/gpg perms, apt mirror benchmarking), all sourced from each vendor's official install method. bootstrap.sh stows the zsh/git/tmux/vscode dotfiles and runs the installer; desnap.sh purges snapd and replaces default snaps with apt/Flatpak equivalents.
66 lines
2.0 KiB
Bash
66 lines
2.0 KiB
Bash
install_zig() {
|
|
local index latest
|
|
index=$(curl -fsSL https://ziglang.org/download/index.json)
|
|
latest=$(jq -r 'keys[]' <<< "$index" | grep -v '^master$' | sort -V | tail -n1)
|
|
|
|
if has_cmd zig && zig version 2>/dev/null | grep -qx "$latest"; then
|
|
ok "zig already at $latest"
|
|
else
|
|
local url tarball extract_dir
|
|
url=$(jq -r --arg v "$latest" '.[$v]["x86_64-linux"].tarball' <<< "$index")
|
|
tarball=$(mktemp --suffix=.tar.xz)
|
|
curl -fsSL "$url" -o "$tarball"
|
|
|
|
extract_dir=$(mktemp -d)
|
|
tar -xJf "$tarball" -C "$extract_dir" --strip-components=1
|
|
rm -f "$tarball"
|
|
|
|
sudo rm -rf /opt/zig
|
|
track_new_sudo_dir /opt/zig
|
|
sudo mv "$extract_dir" /opt/zig
|
|
sudo ln -sf /opt/zig/zig /usr/local/bin/zig
|
|
rollback_push "sudo rm -f /usr/local/bin/zig"
|
|
fi
|
|
|
|
_zig_install_zls
|
|
}
|
|
|
|
# zls (the Zig language server) is versioned against a specific zig build;
|
|
# zigtools' own select-version API returns the right zls release for
|
|
# whatever zig version is currently installed.
|
|
_zig_install_zls() {
|
|
if ! has_cmd zig; then return 0; fi
|
|
|
|
local zig_version resp url
|
|
zig_version=$(zig version)
|
|
resp=$(curl -fsSL "https://releases.zigtools.org/v1/zls/select-version?zig_version=${zig_version}&compatibility=only-runtime")
|
|
url=$(jq -r '.["x86_64-linux"].tarball // empty' <<< "$resp" 2>/dev/null)
|
|
|
|
if [[ -z "$url" ]]; then
|
|
warn "no matching zls build for zig $zig_version, skipping"
|
|
return 0
|
|
fi
|
|
|
|
if [[ -x /opt/zls/zls ]]; then
|
|
local current
|
|
current=$(/opt/zls/zls --version 2>/dev/null || echo "")
|
|
if [[ "$current" == *"$zig_version"* ]]; then
|
|
ok "zls already matches zig $zig_version"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
local tarball extract_dir
|
|
tarball=$(mktemp --suffix=.tar.xz)
|
|
curl -fsSL "$url" -o "$tarball"
|
|
extract_dir=$(mktemp -d)
|
|
tar -xJf "$tarball" -C "$extract_dir"
|
|
rm -f "$tarball"
|
|
|
|
sudo rm -rf /opt/zls
|
|
track_new_sudo_dir /opt/zls
|
|
sudo mv "$extract_dir" /opt/zls
|
|
sudo ln -sf /opt/zls/zls /usr/local/bin/zls
|
|
rollback_push "sudo rm -f /usr/local/bin/zls"
|
|
}
|