Files
distrobox-images/houdini/README.md
2026-09-12 13:19:16 +02:00

134 lines
4.3 KiB
Markdown

# Houdini Apprentice in distrobox
SideFX Labs is baked into the image at build time (see `SIDEFXLABS_VERSION`
below) — no need to install it from Houdini's own package menu, which needs
`git` and a working CA bundle that this image doesn't ship. The Labs menu
should just appear in Houdini's menu bar on first launch.
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
# Release tag at https://github.com/sideeffects/SideFXLabs/releases — pick
# the newest tag whose bundled SideFXLabs.json "enable" range covers your
# Houdini version (default below already matches 22.0.429).
SIDEFXLABS_VERSION=22.0.440
# Build amd image
podman build -f Dockerfile \
--build-arg "HOUDINI_TARBALL=${TARBALL}" \
--build-arg "HOUDINI_EULA_DATE=${EULA_DATE}" \
--build-arg "SIDEFXLABS_VERSION=${SIDEFXLABS_VERSION}" \
--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}" \
--build-arg "SIDEFXLABS_VERSION=${SIDEFXLABS_VERSION}" \
--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.