# Houdini Apprentice in distrobox Two images built from the same `Dockerfile`, pushed to a private registry, used via distrobox: - `houdini-amd` — Houdini + Mesa, for AMD/Intel GPUs - `houdini-nvidia` — Houdini only; the NVIDIA driver is injected at runtime by `distrobox --nvidia` Registry: `docker.slambin.fr`. Files: `Dockerfile`, `houdini-run` (in-image launcher). > Houdini binaries are baked into these images under a personal SideFX > account. Keep the registry **private** — never push these images publicly. --- ## Prerequisites - Your Houdini Linux tarball from your SideFX account (e.g. `houdini-22.0.429-linux_x86_64_gcc14.2.tar.gz`), placed next to the `Dockerfile`. - A SideFX account (Apprentice is free) to activate the license on first launch. ## Build & push ```bash REGISTRY=docker.slambin.fr VERSION=22.0.429 TARBALL=houdini-22.0.429-linux_x86_64_gcc14.2.tar.gz # Date the EULA at https://www.sidefx.com/legal/license-agreement/ was last # updated, format YYYY-MM-DD, no "SideFX-" prefix. EULA_DATE=2021-10-13 # Build amd image podman build -f Dockerfile \ --build-arg "HOUDINI_TARBALL=${TARBALL}" \ --build-arg "HOUDINI_EULA_DATE=${EULA_DATE}" \ --target "amd" \ -t "${REGISTRY}/houdini-amd:${VERSION}" \ -t "${REGISTRY}/houdini-amd:latest" . # Build nvidia image podman build -f Dockerfile \ --build-arg "HOUDINI_TARBALL=${TARBALL}" \ --build-arg "HOUDINI_EULA_DATE=${EULA_DATE}" \ --target "nvidia" \ -t "${REGISTRY}/houdini-nvidia:${VERSION}" \ -t "${REGISTRY}/houdini-nvidia:latest" . ``` ## Install / run One-time, on the host — persists the Apprentice license across container recreation: ```bash mkdir -p ~/.houdini-apprentice && touch ~/.houdini-apprentice/licenses ``` Create the box (pick the image matching your GPU): ```bash # AMD / Intel distrobox create \ --name houdini \ --image docker.slambin.fr/houdini-amd:latest \ --additional-flags "--hostname houdini-apprentice -v $HOME/.houdini-apprentice/licenses:/usr/lib/sesi/licenses" # NVIDIA distrobox create \ --name houdini \ --image docker.slambin.fr/houdini-nvidia:latest \ --nvidia \ --additional-flags "--hostname houdini-apprentice -v $HOME/.houdini-apprentice/licenses:/usr/lib/sesi/licenses" ``` Then: ```bash distrobox enter houdini houdini-run ``` First launch prompts to install the free Apprentice license — log in with your SideFX account. Two things worth knowing: - The `--hostname houdini-apprentice` flag must stay the same every time you recreate the box — Apprentice licenses node-lock to hostname as well as hardware. - Apprentice licenses expire after 30 days; re-activate the same way (a quick re-login in the same dialog). ## App menu entry (icon, no terminal) Houdini doesn't ship its own `.desktop` file, and distrobox doesn't have a built-in way to generate a proper GUI-app entry from a binary — `distrobox-generate-entry` only makes the generic "Terminal entering X" shortcut. So write one by hand and export it: ```bash distrobox enter houdini cat > /tmp/houdini.desktop << 'EOF' [Desktop Entry] Type=Application Name=Houdini FX Comment=Houdini Apprentice (distrobox) Exec=houdini-run Icon=/opt/hfs/houdini/cloudsubmit/houdini_icon.png Terminal=false Categories=Graphics;3DGraphics;Education; StartupWMClass=houdinifx-bin EOF distrobox-export --app /tmp/houdini.desktop ``` This copies the icon to `~/.local/share/icons/` on the host and writes `~/.local/share/applications/houdini-houdini.desktop`. Distrobox also auto-creates a generic `houdini.desktop` ("Terminal entering Houdini") when the box is created — set `NoDisplay=true` in that file, or delete it, if you don't want both entries in the app menu.