| 📁 | .. | |
| 📁 | deps/ | |
| 📁 | device/ |
Optimized emulator packages for AstralEmu, rebuilt daily from source with performance flags and architecture-specific compilation.
This repository serves packages through APT,
DNF, and Pacman — matching whichever
base distro your AstralEmu image uses. The repo is hosted via GitHub
Pages at
https://astralemu.github.io/astralemu-packages/.
Every major standalone emulator is packaged and rebuilt daily. Examples include RetroArch, PPSSPP, Dolphin, PCSX2, Duckstation, Azahar, Ryujinx, Eden, RPCS3, AetherSX2, and more — the full list depends on what's supported on your target architecture.
All RetroArch cores are built individually as separate packages, so you only install what you need.
Device-specific packages that provide kernel modules, firmware, and drivers required by embedded targets (RK3588, Snapdragon, Amlogic, etc.).
Per-device packages that contain the dynamic tuning rules for the Performance Manager — CPU/GPU/RAM governors, clocks, and pinning configs for every supported emulator.
Every package is compiled with:
| Flag | Purpose |
|---|---|
LTO=thin |
Link-time optimization — reduces binary size and improves runtime performance |
jemalloc |
Replaces glibc's allocator for lower fragmentation and better throughput |
| Architecture targeting | Packages are compiled for the exact CPU features of each device (NEON, SVE, SSE4, AVX2, etc.) |
Builds run on GitHub Actions and are triggered automatically every 24 hours, or on-demand when a new emulator release is tagged upstream.
Each device has its own repository for emulator packages, plus a
shared repository for dependencies grouped by source distribution.
Replace <device> with your device ID (e.g.
l4t) and <source_distro> with the source
distribution (e.g. noble).
The astralemu-deps-repo meta-package (included in the
device repo) automatically configures the shared dependency
repository.
curl -fsSL https://astralemu.github.io/astralemu-packages/apt/device/<device>/astralemu.gpg | sudo tee /usr/share/keyrings/astralemu.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/astralemu.gpg] https://astralemu.github.io/astralemu-packages/apt/device/<device> $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/astralemu.list
sudo apt updatesudo dnf config-manager --add-repo https://astralemu.github.io/astralemu-packages/dnf/device/<device>/astralemu-<device>.repoAdd to /etc/pacman.conf:
[astralemu]
SigLevel = Optional TrustAll
Server = https://astralemu.github.io/astralemu-packages/pacman/device/<device>/$arch| Device ID | Name | Architecture | Source Distro |
|---|---|---|---|
l4t |
Nintendo Switch (Tegra X1) | arm64 | noble |
This repo has its own GitHub Pages enabled. The built packages and
repo metadata are served as static files from the gh-pages
branch:
https://astralemu.github.io/astralemu-packages/
├── apt/device/<device>/pool/<distro>/ # emulator packages
├── apt/device/<device>/dists/<distro>/
├── apt/deps/<source_distro>/pool/<distro>/ # shared dependencies
├── apt/deps/<source_distro>/dists/<distro>/
├── dnf/device/<device>/<version>/<arch>/
├── dnf/deps/<source_distro>/<version>/<arch>/
├── pacman/device/<device>/<arch>/
└── pacman/deps/<source_distro>/<arch>/
The CI pipeline builds the packages on main, then pushes
the repo metadata and package files to gh-pages for
serving.
The CI dynamically generates the build matrix from two config files:
devices.yml — Target devices with
architecture, compiler flags, and package sources to mirrordistros.yml — Target distributions
(APT, DNF, Pacman) with their versions and mirrorsEvery package is cross-built to all target formats
(.deb, .rpm, Pacman) with automatic dependency
resolution. Dependencies missing or incompatible on the target distro
are fetched from the source distribution, prefixed with its codename
(e.g. noble-libfoo), and published to a shared dependency
repository. Devices with the same source distribution share the same
dependencies.