#!/usr/bin/env bash # Installs everything the CI jobs need on a Debian/Ubuntu runner. # Pass --windows to also install the tools for cross-compiling the Windows build. set -euo pipefail SUDO=$(command -v sudo || true) export DEBIAN_FRONTEND=noninteractive packages=( build-essential curl wget file xdg-utils pkg-config libwebkit2gtk-4.1-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev ) if [[ "${1:-}" == "--windows" ]]; then packages+=(nsis lld llvm clang) fi $SUDO apt-get update -q $SUDO apt-get install -yq --no-install-recommends "${packages[@]}" # Rust, cargo-xwin and mise may already be here from the CI cache. export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH" # Rust: not pinned in mise.toml, because mise needs rustup for it. if ! command -v cargo >/dev/null; then curl -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal fi echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" export PATH="$HOME/.cargo/bin:$PATH" if [[ "${1:-}" == "--windows" ]]; then rustup target add x86_64-pc-windows-msvc command -v cargo-xwin >/dev/null || cargo install --locked cargo-xwin fi command -v mise >/dev/null || curl -fsSL https://mise.run | MISE_VERSION=v2026.9.1 sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH" mise trust && mise install pnpm install --frozen-lockfile