#!/bin/bash # Prepare the model folders on the machine and the settings for external disks. Safe to re-run. # - models live in $MODELS_DIR on the system disk (or on a disk an older install mounted there, which keeps working) # - external disks are NOT handled here: add them one at a time, whenever you like, with the add-disk script # curl -fsSL /get | sh -s -- add-disk . "$(dirname "$0")/lib.sh" [ -z "${WXCH_FORMAT_DEVICE:-}" ] || die "WXCH_FORMAT_DEVICE no longer exists: use the add-disk script instead (curl -fsSL $BASE/get | WXCH_CONFIRM=ERASE sh -s -- add-disk $WXCH_FORMAT_DEVICE --format)" mkdir -p "$MODELS_DIR" if mountpoint -q "$MODELS_DIR"; then say "$MODELS_DIR is a separate disk: $(findmnt -no SOURCE "$MODELS_DIR" 2>/dev/null)" fi # one folder per runtime; the agent user owns what it downloads itself, Ollama owns its store mkdir -p "$MODELS_DIR/gguf" "$MODELS_DIR/vllm" "$MODELS_DIR/lmstudio" "$MODELS_DIR/ollama" chown "$OWNER" "$MODELS_DIR/gguf" "$MODELS_DIR/vllm" "$MODELS_DIR/lmstudio" getent passwd ollama >/dev/null && chown -R ollama:ollama "$MODELS_DIR/ollama" || true : > "$MODELS_DIR/.wxch-models" # marker: the uninstaller only deletes model data in folders that carry it # a helper that prepares external disks when they are mounted; harmless when there are none if have systemctl && have systemd-escape; then install_ext_prep; systemctl daemon-reload; fi node_json_set models_dir "$MODELS_DIR/ollama" gguf_dir "$MODELS_DIR/gguf" ollama_url "http://127.0.0.1:11434" \ vllm_dir "$MODELS_DIR/vllm" vllm_image "$VLLM_IMAGE" lmstudio_url "http://127.0.0.1:1234" lmstudio_models "$MODELS_DIR/lmstudio" \ external_root "$EXT_ROOT" \ main_models "[\"$MODEL_OLLAMA\", \"$MODEL_LMSTUDIO\", \"$MODEL_VLLM\"]" df -h "$MODELS_DIR" | tail -1 say "model folder ready: $MODELS_DIR"