# Maintainer: NixOrb Contributors <nixorb@example.com>
# PKGBUILD for NixOrb — floating AI assistant orb
# Place this file in its own directory and run: makepkg -si

pkgname=nixorb
pkgver=0.1.0
pkgrel=1
pkgdesc="Floating AI assistant orb for Arch Linux — KDE Plasma 6 Wayland"
arch=('x86_64')
url="https://github.com/nixorb/nixorb"
license=('MIT')
depends=(
    'python>=3.12'
    'python-pyside6'
    'qt6-wayland'
    'qt6-declarative'
    'qt6-multimedia'
    'portaudio'
    'wl-clipboard'
    'grim'
    'ffmpeg'
    'cuda'
    'cudnn'
)
optdepends=(
    'kglobalacceld: native Wayland global hotkeys (AUR)'
    'piper-tts: offline text-to-speech (AUR)'
    'bubblewrap: sandboxed command execution'
)
makedepends=(
    'python-build'
    'python-installer'
    'python-wheel'
    'python-setuptools>=68'
    'qt6-tools'     # for qsb shader compiler
)
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/nixorb/nixorb/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('SKIP')   # CI fills this in

# For local development builds, use:
#   makepkg --skipinteg
# or replace source/sha256sums with:
#   source=("${pkgname}::git+https://github.com/nixorb/nixorb.git")

prepare() {
    cd "${pkgname}-${pkgver}"
    # Install Python dependencies into a venv for packaging
    python -m venv --system-site-packages .venv
    .venv/bin/pip install --no-build-isolation \
        faster-whisper \
        openai \
        chromadb \
        llama-cpp-python \
        aiohttp \
        qasync \
        pydantic \
        pydantic-settings \
        tomli-w \
        typer \
        rich \
        pygments \
        openwakeword \
        huggingface-hub \
        cryptography \
        aiofiles \
        sounddevice \
        soundfile \
        numpy \
        pynput \
        hypernix
}

build() {
    cd "${pkgname}-${pkgver}"

    # Compile QML shaders
    if command -v qsb &>/dev/null; then
        qsb --glsl "100es,120,150" --hlsl 50 --msl 12 \
            assets/shaders/orb_glow.vert -o assets/shaders/orb_glow.vert.qsb
        qsb --glsl "100es,120,150" --hlsl 50 --msl 12 \
            assets/shaders/orb_glow.frag -o assets/shaders/orb_glow.frag.qsb
    else
        echo "WARNING: qsb not found — shaders not compiled. Install qt6-tools."
    fi

    python -m build --wheel --no-isolation
}

package() {
    cd "${pkgname}-${pkgver}"

    # Install the Python wheel
    python -m installer --destdir="${pkgdir}" dist/*.whl

    # Install assets
    install -dm755 "${pkgdir}/usr/share/nixorb"
    cp -r assets "${pkgdir}/usr/share/nixorb/"
    cp -r config "${pkgdir}/usr/share/nixorb/"

    # Desktop entry
    install -Dm644 packaging/nixorb.desktop \
        "${pkgdir}/usr/share/applications/nixorb.desktop"

    # Icons
    install -Dm644 assets/nixorb_256.png \
        "${pkgdir}/usr/share/icons/hicolor/256x256/apps/nixorb.png"
    install -Dm644 assets/tray_icon.png \
        "${pkgdir}/usr/share/icons/hicolor/48x48/apps/nixorb-tray.png"

    # License
    install -Dm644 LICENSE \
        "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

    # Default config
    install -Dm644 config/default.toml \
        "${pkgdir}/usr/share/nixorb/default.toml"
}
