Build

Compiling Themerr-jellyfin requires the following:

Clone

Ensure git is installed and run the following:

git clone https://github.com/lizardbyte/themerr-jellyfin.git
cd ./themerr-jellyfin

Setup Python

Python dependencies are managed with uv. Install uv outside this repository’s .venv if it is not already available:

pipx install uv
# or
python -m pip install --user uv

If Python 3.14 is not already installed, install it with uv:

uv python install 3.14

Install Dependencies

Create or update the project .venv environment, including build dependencies:

uv sync --only-group dev --no-install-project

Compile

uv run --no-sync python ./scripts/build_plugin.py --output ./build

The generated build.yaml is printed to stdout before JPRM runs and is left in the repository root by default. Use --remove-build-yaml to delete it after the script finishes.

Release builds can pass an explicit plugin version:

uv run --no-sync python ./scripts/build_plugin.py --version v1.2.3 --output ./build

Any generated build.yaml field can be overridden with a THEMERR_ environment variable. Use the field name in upper snake case, such as THEMERR_NAME, THEMERR_TARGET_ABI, THEMERR_FRAMEWORK, THEMERR_VERSION, or THEMERR_CHANGELOG. THEMERR_ARTIFACTS accepts a YAML list, a JSON string array, a newline-separated list, or a comma-separated list. CI sets THEMERR_CHANGELOG from the release body automatically.

When Python dependencies change, update the lock file and include it in the same pull request:

uv lock

CI installs from uv.lock with uv sync --frozen. To check the lock file and install build dependencies locally, run:

uv lock --check
uv sync --frozen --only-group dev --no-install-project

Remote Build

It may be beneficial to build remotely in some cases. This will enable easier building on different operating systems.

  1. Fork the project

  2. Activate workflows

  3. Trigger the CI workflow manually

  4. Download the artifacts from the workflow run summary