Created
February 11, 2026 02:26
-
-
Save loopyd/c1f7bcff681e2d6d6b0ff0d6d0c0e9a8 to your computer and use it in GitHub Desktop.
[bash] Install REAPER (https://www.reaper.fm/)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # Also will build libSwell for you. | |
| set -eo pipefail | |
| C_RED=$(tput setaf 1) | |
| C_GREEN=$(tput setaf 2) | |
| C_BLUE=$(tput setaf 4) | |
| C_RESET=$(tput sgr0) | |
| fail() { | |
| echo "${C_RED}Error: $1${C_RESET}" >&2 | |
| exit 1 | |
| } | |
| success() { | |
| echo "${C_GREEN}$1${C_RESET}" | |
| } | |
| info() { | |
| echo "${C_BLUE}$1${C_RESET}" | |
| } | |
| REAPER_VERSION="761" | |
| REAPER_TAR="reaper${REAPER_VERSION}_linux_x86_64.tar.xz" | |
| REAPER_URL="https://www.reaper.fm/files/7.x/${REAPER_TAR}" | |
| INSTALL_DIR="/opt" | |
| TMP_DIR="/tmp" | |
| EXTRACT_DIR="reaper_linux_x86_64" | |
| WDL_DIR="${TMP_DIR}/WDL" | |
| SAFE_PROC="$(nproc --ignore=1)" | |
| fetch_deps() { | |
| for cmd in wget tar xdg-desktop-menu xdg-icon-resource xdg-mime; do | |
| command -v "$cmd" >/dev/null 2>&1 || fail "Required command '$cmd' not found. Please install it first." | |
| done | |
| DEPS=(libgtk-3-0t64 libmp3lame0 ffmpeg vlc build-essential libgtk-3-dev git) | |
| MISSING_DEPS=() | |
| for pkg in "${DEPS[@]}"; do | |
| if ! dpkg -s "$pkg" &>/dev/null; then | |
| MISSING_DEPS+=("$pkg") | |
| fi | |
| done | |
| if [ ${#MISSING_DEPS[@]} -gt 0 ]; then | |
| info "Installing missing dependencies: ${MISSING_DEPS[*]}" | |
| sudo apt-get update || fail "Failed to update package lists" | |
| sudo apt-get install -y "${MISSING_DEPS[@]}" || fail "Failed to install dependencies" | |
| else | |
| success "All dependencies already installed." | |
| fi | |
| return 0 | |
| } | |
| install() { | |
| if [ -d "${INSTALL_DIR}/REAPER" ] && [ -f "${INSTALL_DIR}/REAPER/reaper" ]; then | |
| success "REAPER is already installed in ${INSTALL_DIR}/REAPER, nothing to do." | |
| return 0 | |
| fi | |
| if [ -f "${TMP_DIR}/${REAPER_TAR}" ]; then | |
| success "REAPER archive already downloaded in ${TMP_DIR}/${REAPER_TAR}." | |
| else | |
| info "Downloading REAPER ${REAPER_VERSION}..." | |
| wget "${REAPER_URL}" -O "${TMP_DIR}/${REAPER_TAR}" || fail "Failed to download REAPER from ${REAPER_URL}" | |
| fi | |
| if [ -d "${TMP_DIR}/${EXTRACT_DIR}" ]; then | |
| success "REAPER archive already extracted in ${TMP_DIR}/${EXTRACT_DIR}." | |
| else | |
| info "Extracting REAPER to ${TMP_DIR}/${EXTRACT_DIR}..." | |
| tar -xf "${TMP_DIR}/${REAPER_TAR}" -C "${TMP_DIR}" || fail "Failed to extract REAPER tarball" | |
| fi | |
| if [ ! -f "${TMP_DIR}/${EXTRACT_DIR}/install-reaper.sh" ]; then | |
| fail "install-reaper.sh not found in extracted archive" | |
| fi | |
| info "Running REAPER installer..." | |
| cd "${TMP_DIR}/${EXTRACT_DIR}" || fail "Failed to change directory to ${TMP_DIR}/${EXTRACT_DIR}" | |
| sudo sh ./install-reaper.sh --install "${INSTALL_DIR}" --integrate-sys-desktop --usr-local-bin-symlink --quiet || fail "REAPER installation failed" | |
| if [ ! -f "${INSTALL_DIR}/REAPER/reaper" ] || [ ! -L "/usr/local/bin/reaper" ]; then | |
| fail "REAPER installation failed: executable or symlink not found after installation, please check the installer output for details." | |
| fi | |
| success "REAPER ${REAPER_VERSION} installed successfully!" | |
| success "Installation path: ${INSTALL_DIR}/REAPER" | |
| success "Symlink: /usr/local/bin/reaper" | |
| return 0 | |
| } | |
| libSwell() { | |
| info "Building libSwell.so..." | |
| if [ -d "${WDL_DIR}" ]; then | |
| success "WDL build directory already exists at ${WDL_DIR}, skipping clone." | |
| else | |
| git clone "https://www-dev.cockos.com/wdl/WDL.git" "${WDL_DIR}" || fail "Failed to clone WDL repository" | |
| fi | |
| cd "${WDL_DIR}/WDL/swell" || fail "Failed to change directory to ${WDL_DIR}/WDL/swell" | |
| make -j"${SAFE_PROC}" || fail "Failed to build libSwell.so" | |
| info "Installing custom libSwell.so..." | |
| sudo cp -f "${WDL_DIR}/WDL/swell/libSwell.so" "${INSTALL_DIR}/REAPER/libSwell.so" || fail "Failed to install libSwell.so" | |
| success "libSwell.so installed successfully" | |
| success "Installed libSwell.so path: ${INSTALL_DIR}/REAPER/libSwell.so" | |
| return 0 | |
| } | |
| cleanup() { | |
| info "Cleaning up..." | |
| if [ -d "${TMP_DIR}/${EXTRACT_DIR}" ]; then | |
| rm -rf "${TMP_DIR:?}/${EXTRACT_DIR:?}" || fail "Failed to remove temporary extraction directory" | |
| fi | |
| if [ -f "${TMP_DIR}/${REAPER_TAR}" ]; then | |
| rm -f "${TMP_DIR}/${REAPER_TAR}" || fail "Failed to remove temporary REAPER tarball" | |
| fi | |
| if [ -d "${WDL_DIR}" ]; then | |
| rm -rf "${WDL_DIR}" || fail "Failed to remove WDL build directory" | |
| fi | |
| return 0 | |
| } | |
| fetch_deps || fail "Dependency installation failed" | |
| install || fail "REAPER installation failed" | |
| libSwell || fail "libSwell installation failed" | |
| cleanup || fail "Cleanup failed" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment