#!/bin/bash #=============================================================================== # Basilisk II Auto-Installer # Installe, compile et configure Basilisk II sur Arch Linux ou Debian/Ubuntu #=============================================================================== set -e #------------------------------------------------------------------------------- # Configuration - À adapter avec tes URLs #------------------------------------------------------------------------------- GIT_BASE_URL="https://ton-git-perso.com/basilisk" # Remplace par ton URL ROM_URL="${GIT_BASE_URL}/quadra900.rom" HDD_URL="${GIT_BASE_URL}/system7.img" INSTALL_DIR="${HOME}/.basilisk2" ROM_FILE="${INSTALL_DIR}/quadra900.rom" HDD_FILE="${INSTALL_DIR}/system7.img" CONFIG_FILE="${INSTALL_DIR}/basilisk2_prefs" SHARED_DIR="${INSTALL_DIR}/shared" #------------------------------------------------------------------------------- # Détection de la distribution #------------------------------------------------------------------------------- detect_distro() { if [ -f /etc/arch-release ]; then echo "arch" elif [ -f /etc/debian_version ]; then echo "debian" else echo "unknown" fi } #------------------------------------------------------------------------------- # Installation des dépendances #------------------------------------------------------------------------------- install_deps_arch() { echo ">>> Installation des dépendances (Arch)..." sudo pacman -S --needed --noconfirm \ base-devel git sdl2 gtk2 \ autoconf automake pkg-config } install_deps_debian() { echo ">>> Installation des dépendances (Debian/Ubuntu)..." sudo apt-get update sudo apt-get install -y \ build-essential git libsdl2-dev libgtk2.0-dev \ autoconf automake pkg-config wget } #------------------------------------------------------------------------------- # Compilation de Basilisk II #------------------------------------------------------------------------------- compile_basilisk() { echo ">>> Compilation de Basilisk II..." local build_dir="/tmp/basilisk2-build" rm -rf "${build_dir}" mkdir -p "${build_dir}" cd "${build_dir}" git clone --depth 1 https://github.com/cebix/macemu.git cd macemu/BasiliskII/src/Unix ./autogen.sh ./configure --enable-sdl-video --enable-sdl-audio --with-gtk=gtk2 make -j$(nproc) # Installation du binaire mkdir -p "${INSTALL_DIR}/bin" cp BasiliskII "${INSTALL_DIR}/bin/" echo ">>> Compilation terminée" cd / rm -rf "${build_dir}" } #------------------------------------------------------------------------------- # Téléchargement des ressources #------------------------------------------------------------------------------- download_resources() { echo ">>> Téléchargement de la ROM et de l'image disque..." mkdir -p "${INSTALL_DIR}" mkdir -p "${SHARED_DIR}" if [ ! -f "${ROM_FILE}" ]; then echo " Téléchargement ROM..." wget -q --show-progress -O "${ROM_FILE}" "${ROM_URL}" else echo " ROM déjà présente, skip" fi if [ ! -f "${HDD_FILE}" ]; then echo " Téléchargement image disque..." wget -q --show-progress -O "${HDD_FILE}" "${HDD_URL}" else echo " Image disque déjà présente, skip" fi } #------------------------------------------------------------------------------- # Génération de la configuration #------------------------------------------------------------------------------- generate_config() { echo ">>> Génération de la configuration..." cat > "${CONFIG_FILE}" << EOF # Basilisk II Configuration # Généré automatiquement # ROM et disque rom ${ROM_FILE} disk ${HDD_FILE} # Mémoire (16 Mo) ramsize 16777216 # Modèle Quadra 900 modelid 14 cpu 4 fpu true # Affichage (plein écran, 800x600, 256 couleurs) screen dga/800/600/8 frameskip 1 # Audio nosound false # Réseau (désactivé par défaut) nonet true # Dossier partagé avec l'hôte extfs ${SHARED_DIR} # Presse-papier partagé enableextfs true EOF echo ">>> Configuration générée: ${CONFIG_FILE}" } #------------------------------------------------------------------------------- # Création du lanceur #------------------------------------------------------------------------------- create_launcher() { echo ">>> Création des lanceurs..." # Script de lancement local launcher="${INSTALL_DIR}/run.sh" cat > "${launcher}" << EOF #!/bin/bash cd "${INSTALL_DIR}" exec "${INSTALL_DIR}/bin/BasiliskII" --config "${CONFIG_FILE}" EOF chmod +x "${launcher}" # Lien symbolique dans ~/bin si existe if [ -d "${HOME}/bin" ]; then ln -sf "${launcher}" "${HOME}/bin/basilisk2" echo " Lien créé: ~/bin/basilisk2" fi # Fichier .desktop local desktop_file="${HOME}/.local/share/applications/basilisk2.desktop" mkdir -p "$(dirname "${desktop_file}")" cat > "${desktop_file}" << EOF [Desktop Entry] Name=Basilisk II Comment=Émulateur Macintosh 68k - System 7 Exec=${launcher} Icon=computer Terminal=false Type=Application Categories=Emulator;System; EOF echo " Raccourci bureau créé" } #------------------------------------------------------------------------------- # Main #------------------------------------------------------------------------------- main() { echo "==============================================" echo " Basilisk II - Installation automatique" echo "==============================================" echo local distro=$(detect_distro) echo ">>> Distribution détectée: ${distro}" case "${distro}" in arch) install_deps_arch ;; debian) install_deps_debian ;; *) echo "ERREUR: Distribution non supportée" echo "Supportées: Arch Linux, Debian/Ubuntu" exit 1 ;; esac compile_basilisk download_resources generate_config create_launcher echo echo "==============================================" echo " Installation terminée !" echo "==============================================" echo echo " Dossier: ${INSTALL_DIR}" echo " Lancer: ${INSTALL_DIR}/run.sh" echo " Dossier partagé: ${SHARED_DIR}" echo echo " Tu peux aussi lancer depuis le menu applications" echo " ou taper 'basilisk2' si ~/bin est dans ton PATH" echo } main "$@"