.gitignore | ||
build-citron.sh | ||
CONTRIBUTING.md | ||
Dockerfile | ||
LICENSE | ||
readme.md | ||
start_build_linux_macOS.sh | ||
start_build_steamdeck_podman.sh | ||
start_build_windows_wsl.bat |
Citron AppImage Builder
This repository contains scripts to build Citron using either an Arch Linux Docker container or a Podman container for Steam Deck. It automates the process of setting up a clean environment and generating a Citron AppImage with support for multiple build modes.
Features
- Uses Docker or Podman to provide a consistent build environment.
- Supports multiple build modes:
release
: Release mode builds Citron with optimizations for better performance.steamdeck
: Steamdeck mode builds Citron with optimizations for better performance.compatibility
: Compatibility mode builds Citron with optimizations for older architectures.debug
: Debug mode includes additional debugging symbols but is slower.
- Included startup scripts for Windows, Steam Deck, Linux, and macOS (
start_build_<OS>...
) that automate the build process with an interactive prompt for all options. - Outputs a Citron AppImage in the current working directory.
- Option to output Linux binaries separately.
- Option to cache the Citron Git repository for subsequent builds.
Requirements
Windows
- Docker Desktop for Windows installed and running on your system.
- Windows Subsystem for Linux (WSL) installed and enabled.
Steam Deck
- Podman should be pre-installed with SteamOS 3.5+. Verify installation by running:
If Podman is not installed, you can install it from the SteamOS Software Center.podman --version
- Sufficient disk space (~5GB for the build process).
Linux / macOS
- Docker installed.
Note for users on ARM-based devices (e.g., macOS M1/M2 or similar ARM64 platforms):
If you encounter issues during the build process, it may be due to architecture incompatibilities with the docker image. Try one of the following solutions:
- Use an ARM64-compatible container image by specifying the platform explicitly:
docker build --platform=linux/arm64 -t citron-builder . docker run --platform=linux/arm64 --rm -v "$(pwd)":/output citron-builder
- Install Rosetta 2 (for macOS) and run the container in x86_64 emulation mode:
softwareupdate --install-rosetta docker run --platform=linux/amd64 --rm -v "$(pwd)":/output citron-builder
Any feedback or contributions to improve the script for ARM-based host builds is welcome.
Usage
Windows
-
Clone this repository:
git clone https://github.com/azazelv5/citron-appimage-builder.git cd citron-appimage-builder
Alternatively, download and extract the repository as a ZIP file.
-
Run the batch script:
start_build_windows_wsl.bat
-
Follow the on-screen prompts to select your build options.
-
Ensure an active internet connection for downloading dependencies.
-
The Citron AppImage file will be created in the current directory.
-
After the build process, the script will prompt you to perform optional disk cleanup.
Linux / macOS
-
Clone this repository:
git clone https://github.com/azazelv5/citron-appimage-builder.git cd citron-appimage-builder
Alternatively, download and extract the repository as a ZIP file.
-
Make the start script executable:
chmod +x start_build_linux_macOS.sh
-
Run the linux/macOS build script:
./start_build_linux_macOS.sh
-
Follow the on-screen prompts to select your build mode and Citron version.
-
Ensure an active internet connection for downloading dependencies.
-
The Citron AppImage file will be created in the current directory.
-
The script will prompt you about optional disk cleanup.
Steam Deck (Podman)
-
Switch to Desktop Mode.
-
Open a terminal (Konsole is the default terminal app).
-
Ensure you are in a writable directory:
cd ~
-
Clone this repository:
git clone https://github.com/azazelv5/citron-appimage-builder.git cd citron-appimage-builder
-
Make the start script executable:
chmod +x start_build_steamdeck_podman.sh
-
Run the Steam Deck build script:
./start_build_steamdeck_podman.sh
-
Follow the on-screen prompts to select your build mode and Citron version.
-
The Steam Deck may enter sleep mode during the build process. To prevent sleep mode, click the battery icon in the system tray and select "Manually block sleep and screen locking."
-
The Citron AppImage file will be created in the current directory.
-
The script will prompt you about optional disk cleanup.
Advanced Docker Usage
The startup scripts for each OS cover most use cases, but you can manually run the Docker container using the examples below:
-
Use the default command for the latest Citron build optimized for Steam Deck:
docker run --rm -v "$(pwd)":/output citron-builder
-
Specify a version tag, branch name or commit hash if you need a specific release:
docker run --rm -e CITRON_VERSION=v0.5-canary-refresh -v "$(pwd)":/output citron-builder
-
Choose a different build mode (
release
,steamdeck
,compatibility
,debug
):docker run --rm -e CITRON_BUILD_MODE=compatibility -e CITRON_VERSION=v0.5-canary-refresh -v "$(pwd)":/output citron-builder
-
Enable Linux binary output if you need separate non-AppImage executables:
docker run --rm -e OUTPUT_LINUX_BINARIES=true -v "$(pwd)":/output citron-builder
-
Use cache options to speed up subsequent builds by preserving Citron's source repository between runs:
docker run --rm -e USE_CACHE=true -v "$(pwd)":/output citron-builder
Output Naming
The generated AppImage filename will follow this format:
- Latest builds:
citron-nightly-<build_mode>-<timestamp>-<commit_hash>.AppImage
- Versioned builds:
citron-<version>-<build_mode>.AppImage
For example:
citron-nightly-steamdeck-20250228-153045-abcdefg.AppImage
citron-v0.5-canary-refresh-release.AppImage
Troubleshooting
- If the build process fails, check your internet connection and verify that the Citron repository and external dependencies are accessible. Check the Citron Discord community for more information.
Credits
This script was created with the help of the Citron Wiki and members of the Citron Discord community.
License
This project is licensed under the GNU GENERAL PUBLIC LICENSE. See the LICENSE file for details.