#!/usr/bin/env bash set -euo pipefail if [[ ! -r /etc/os-release ]]; then echo "Tidak bisa mendeteksi OS" exit 1 fi . /etc/os-release OS_ID="${ID:-}" OS_LIKE="${ID_LIKE:-}" run_as_root() { if [[ "${EUID}" -eq 0 ]]; then "$@" return fi if command -v sudo >/dev/null 2>&1; then sudo "$@" return fi echo "Perlu akses root, tapi sudo tidak ditemukan." echo "Jalankan skrip ini sebagai root atau install sudo terlebih dahulu." exit 1 } install_mise() { local shell_name shell_name="$(basename "${SHELL:-}")" case "${shell_name}" in bash|zsh|fish) curl -fsSL "https://mise.run/${shell_name}" | sh ;; *) curl -fsSL https://mise.run | sh echo echo "Shell tidak dikenali untuk auto-activation: ${shell_name:-unknown}" echo "Tambahkan manual sesuai shell kamu:" echo ' eval "$(~/.local/bin/mise activate bash)"' ;; esac export PATH="${HOME}/.local/bin:${PATH}" if command -v mise >/dev/null 2>&1; then echo echo "mise berhasil terinstall:" mise --version echo echo "Restart terminal, lalu cek dengan:" echo " mise doctor" else echo "mise belum masuk PATH." echo "Coba jalankan:" echo ' export PATH="$HOME/.local/bin:$PATH"' echo " ~/.local/bin/mise --version" fi } install_tailscale() { curl -fsSL https://tailscale.com/install.sh | sh } login_tailscale() { local tailscale_auth_key if ! command -v tailscale >/dev/null 2>&1; then echo "tailscale belum ditemukan, login dilewati." return fi echo read -r -s -p "Masukkan Tailscale auth key (kosongkan untuk skip): " tailscale_auth_key echo if [[ -z "${tailscale_auth_key}" ]]; then echo "Login Tailscale dilewati." return fi run_as_root tailscale up --auth-key="${tailscale_auth_key}" } if [[ "${OS_ID}" == "fedora" || "${OS_LIKE}" == *"fedora"* || "${OS_LIKE}" == *"rhel"* ]]; then echo "OS berbasis Fedora/RHEL terdeteksi" run_as_root dnf update -y run_as_root dnf install -y ca-certificates curl git gzip tar unzip wget xz install_tailscale login_tailscale install_mise elif [[ "${OS_ID}" == "ubuntu" || "${OS_ID}" == "debian" || "${OS_LIKE}" == *"debian"* ]]; then echo "OS berbasis Debian/Ubuntu terdeteksi" run_as_root apt-get update run_as_root apt-get install -y ca-certificates curl git gzip tar unzip wget xz-utils install_tailscale login_tailscale install_mise else echo "OS tidak didukung:" echo "ID=${OS_ID}" echo "ID_LIKE=${OS_LIKE}" exit 1 fi