Download setup.sh from Snapkitty/nekomata: direct link, hf CLI and curl.
- Browser
- Download file 6.05 kB
-
https://huggingface.co/Snapkitty/nekomata/resolve/main/setup.sh
- Command line
-
hf download hf://Snapkitty/nekomata/setup.sh
-
curl -L -o setup.sh https://huggingface.co/Snapkitty/nekomata/resolve/main/setup.sh
6.05 kB
| # Nekomata β Docker + SBCL setup script | |
| # Usage: bash setup.sh | |
| # Supports: Ubuntu/Debian, Fedora/RHEL, Arch, macOS | |
| set -e | |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββ" | |
| echo "β NEKOMATA η«ε β Environment Setup β" | |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββ" | |
| echo "" | |
| # Detect OS | |
| detect_os() { | |
| if [[ "$OSTYPE" == "darwin"* ]]; then | |
| echo "macos" | |
| elif [[ -f /etc/debian_version ]]; then | |
| echo "debian" | |
| elif [[ -f /etc/fedora-release ]]; then | |
| echo "fedora" | |
| elif [[ -f /etc/arch-release ]]; then | |
| echo "arch" | |
| else | |
| echo "unknown" | |
| fi | |
| } | |
| OS=$(detect_os) | |
| echo "[*] Detected OS: $OS" | |
| echo "" | |
| # Install Docker | |
| install_docker() { | |
| echo "[1/3] Installing Docker..." | |
| case $OS in | |
| debian) | |
| sudo apt-get update -qq | |
| sudo apt-get install -y -qq ca-certificates curl gnupg | |
| sudo install -m 0755 -d /etc/apt/keyrings | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 2>/dev/null || true | |
| sudo chmod a+r /etc/apt/keyrings/docker.gpg | |
| echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | |
| sudo apt-get update -qq | |
| sudo apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-buildx-plugin | |
| ;; | |
| fedora) | |
| sudo dnf -y install dnf-plugins-core | |
| sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo | |
| sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin | |
| ;; | |
| arch) | |
| sudo pacman -Sy --noconfirm docker | |
| ;; | |
| macos) | |
| if ! command -v brew &>/dev/null; then | |
| echo "ERROR: Homebrew required. Install from https://brew.sh" | |
| exit 1 | |
| fi | |
| brew install --cask docker | |
| echo "[!] Docker Desktop installed β launch it from Applications." | |
| echo "[!] Socket will be at: /var/run/docker.sock (after launch)" | |
| ;; | |
| *) | |
| echo "ERROR: Unsupported OS. Install Docker manually." | |
| echo " https://docs.docker.com/engine/install/" | |
| exit 1 | |
| ;; | |
| esac | |
| echo "[+] Docker installed." | |
| } | |
| # Start Docker daemon | |
| start_docker() { | |
| echo "[2/3] Starting Docker daemon..." | |
| case $OS in | |
| macos) | |
| open -a Docker 2>/dev/null || true | |
| echo "[!] Waiting for Docker Desktop to start..." | |
| for i in $(seq 1 30); do | |
| docker info &>/dev/null && break | |
| sleep 2 | |
| done | |
| ;; | |
| *) | |
| sudo systemctl enable docker | |
| sudo systemctl start docker | |
| sudo usermod -aG docker "$USER" 2>/dev/null || true | |
| ;; | |
| esac | |
| if docker info &>/dev/null; then | |
| echo "[+] Docker running." | |
| else | |
| echo "[!] Docker installed but not yet running." | |
| echo " Run: sudo systemctl start docker" | |
| echo " Then: newgrp docker" | |
| fi | |
| } | |
| # Install SBCL + Quicklisp | |
| install_sbcl() { | |
| echo "[3/3] Installing SBCL + Quicklisp..." | |
| case $OS in | |
| debian) | |
| sudo apt-get install -y -qq sbcl cl-quicklisp | |
| ;; | |
| fedora) | |
| sudo dnf -y install sbcl | |
| ;; | |
| arch) | |
| sudo pacman -Sy --noconfirm sbcl | |
| ;; | |
| macos) | |
| brew install sbcl | |
| ;; | |
| *) | |
| echo "ERROR: Install SBCL manually from http://www.sbcl.org/platform-table.html" | |
| exit 1 | |
| ;; | |
| esac | |
| # Install Quicklisp if not present | |
| if [ ! -f "$HOME/quicklisp/setup.lisp" ]; then | |
| echo "[*] Installing Quicklisp..." | |
| curl -fsSL https://beta.quicklisp.org/quicklisp.lisp -o /tmp/quicklisp.lisp | |
| sbcl --non-interactive --load /tmp/quicklisp.lisp \ | |
| --eval '(quicklisp-quickstart:install)' \ | |
| --eval '(ql-util:without-prompting (ql:add-to-init-file))' | |
| rm -f /tmp/quicklisp.lisp | |
| fi | |
| echo "[+] SBCL + Quicklisp ready." | |
| } | |
| # Verify socket | |
| verify_socket() { | |
| echo "" | |
| echo "βββ Verification βββ" | |
| if [ -S /var/run/docker.sock ]; then | |
| echo "[+] /var/run/docker.sock exists" | |
| if docker info &>/dev/null; then | |
| echo "[+] Docker API responding" | |
| docker version --format '{{.Server.Version}}' 2>/dev/null && echo " (server version)" | |
| fi | |
| else | |
| echo "[!] Socket not found yet β Docker may need a restart" | |
| fi | |
| if command -v sbcl &>/dev/null; then | |
| echo "[+] SBCL $(sbcl --version 2>&1 | head -1)" | |
| fi | |
| echo "" | |
| echo "βββ Ready βββ" | |
| echo "" | |
| echo " Load Nekomata:" | |
| echo "" | |
| echo " cd $(pwd)" | |
| echo " sbcl --load nekod.asd --eval '(ql:quickload :nekod)'" | |
| echo "" | |
| echo " Run tests:" | |
| echo "" | |
| echo " sbcl --load nekod.asd \\" | |
| echo " --eval '(ql:quickload :nekod)' \\" | |
| echo " --load tests/socket-tests.lisp \\" | |
| echo " --eval '(nekod.test.socket:run-all-tests)'" | |
| echo "" | |
| } | |
| # Main | |
| if command -v docker &>/dev/null && docker info &>/dev/null; then | |
| echo "[*] Docker already installed and running." | |
| else | |
| install_docker | |
| start_docker | |
| fi | |
| if command -v sbcl &>/dev/null; then | |
| echo "[*] SBCL already installed." | |
| else | |
| install_sbcl | |
| fi | |
| verify_socket | |