---
title: builds.sr.ht compatibility matrix
---
If you have any special requests, please [send an
email](mailto:~sircmpwn/sr.ht-discuss@lists.sr.ht). Only architectures supported
by each Linux distribution upstream are listed, and named after the upstream
port (e.g. Debian uses "amd64" while Alpine uses "x86_64").
**Note**: support for multi-arch builds is underway, but not yet available.
The "native" column is checked if these builds run on native hardware for that
architecture, if unchecked the builds are run on emulated hardware and may
suffer from poor performance.
**Support lifecycle**
The support lifecycle for each build image follows the upstream support cycle.
Each supported upstream release is generally offered on sr.ht, as well as the
bleeding edge or development releases if applicable. No sooner than two weeks
after a release becomes unsupported upstream, it will be unsupported on
builds.sr.ht — and anyone who's submitted recent builds using those images will
get an email warning them of the impending breakage.
It's recommended that you use aliases like "alpine/latest" or "debian/testing"
rather than using a specific release in your build manifests.
## Alpine Linux
Maintainer: Drew DeVault
Support policy: [upstream](https://alpinelinux.org/releases/)
Alpine Edge |
image: alpine/edge
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: ppc64el | | | |
arch: s390x | | | |
arch: x86_64 (default) |
✓ |
✓ |
daily |
arch: x86 | | | |
Alpine 3.18 |
image: alpine/latest or
image: alpine/3.18
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: ppc64el | | | |
arch: s390x | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
arch: x86 | | | |
Alpine 3.17 |
image: alpine/old or
image: alpine/3.17
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: ppc64el | | | |
arch: s390x | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
arch: x86 | | | |
Alpine 3.16 |
image: alpine/older or
image: alpine/3.16
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: ppc64el | | | |
arch: s390x | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
arch: x86 | | | |
Alpine 3.15 |
image: alpine/oldest or
image: alpine/3.15
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: ppc64el | | | |
arch: s390x | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
arch: x86 | | | |
**packages**
The packages array is installed with `apk add`.
**repositories**
To add custom apk repositories, use `repo-url key-url key-name` (separated with
spaces), where `repo-url` is the URL of the package repository and `key-url` is
a URL from where the signing key may be downloaded, and `key-name` is the name
of the file written to `/etc/apk/keys/`. If the name of the repo is prefixed
with an @, it will use that prefix in apk.
Example:
```yaml
repositories:
sr.ht: >
https://mirror.sr.ht/alpine/sr.ht/
https://mirror.sr.ht/alpine/sr.ht/alpine%40sr.ht.rsa.pub
alpine@sr.ht.rsa.pub
```
## Arch Linux
Maintainer: Drew DeVault
Arch Linux |
image: archlinux
|
arch |
supported |
native |
updated |
arch: x86_64 (default) |
✓ |
✓ |
daily |
**packages**
The package array is installed with `yay -Syu` (AUR packages are transparently
installed).
**repositories**
To add custom pacman repositories, use `url#key-id`, where `url` is the URL of
the package repository and `key-id` is the ID of the published PGP key the
packages are signed with.
## Debian
Maintainer: Drew DeVault
Support policy: stable, testing, unstable, and oldstable are supported.
See also: [upstream releases](https://www.debian.org/releases/)
Debian Bullseye (stable) |
image: debian/stable or
image: debian/bullseye
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: armel | | | |
arch: armhf | | | |
arch: i386 | | | |
arch: mips | | | |
arch: mips64el | | | |
arch: mipsel | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Debian Bookworm (testing) |
image: debian/testing or
image: debian/bookworm
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
daily |
arch: armel | | | |
arch: armhf | | | |
arch: i386 | | | |
arch: mips | | | |
arch: mips64el | | | |
arch: mipsel | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Debian Sid (unstable) |
image: debian/unstable or
image: debian/sid
|
arch |
supported |
native |
updated |
arch: arm64 (experimental) |
✓ |
✗ |
manually |
arch: amd64 (default) |
✓ |
✓ |
daily |
arch: armel | | | |
arch: armhf | | | |
arch: i386 | | | |
arch: mips | | | |
arch: mips64el | | | |
arch: mipsel | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Debian Buster (oldstable) |
image: debian/oldstable or
image: debian/buster
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
monthly |
arch: armel | | | |
arch: armhf | | | |
arch: i386 | | | |
arch: mips | | | |
arch: mips64el | | | |
arch: mipsel | | | |
arch: ppc64el | | | |
arch: s390x | | | |
**packages**
The packages array is installed with `apt-get install`.
**repositories**
To add custom repositories, specify `url release component key-id` (separated by
spaces), where `url` is the URL of the package repository, `release` is e.g.
`buster` or `bullseye`, `component` is e.g. `main`, `contrib` or `non-free`, and
`key-id` is an optional PGP key ID to add to the system keyring. Example:
```yaml
repositories:
sr.ht: https://mirror.sr.ht/debian/sr.ht/ bullseye main DEADBEEFCAFEF00D
```
## Fedora Linux
Maintainer: Haowen Liu
Fedora Rawhide |
image: fedora/rawhide or
image: fedora/39
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: x86_64 (default) |
✓ |
✓ |
daily |
Fedora 38 |
image: fedora/latest or
image: fedora/38
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
Fedora 37 |
image: fedora/37
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
**packages**
The packages array is installed with `dnf install`.
**repositories**
Given the following list of repositories in your manifest:
```yaml
repositories:
example: https://example.org
```
The following commands will be used to configure it:
dnf config-manager --add-repo https://example.org
dnf config-manager --set-enabled example
## FreeBSD
Maintainer: Simon Ser
Support policy: [Upstream production
releases](https://www.freebsd.org/releases/) are supported.
FreeBSD 13.x |
image: freebsd/latest or
image: freebsd/13.x
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: i386 | | | |
arch: powerpc | | | |
arch: powerpc64 | | | |
arch: sparc64 | | | |
FreeBSD 12.x |
image: freebsd/12.x
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: i386 | | | |
arch: powerpc | | | |
arch: powerpc64 | | | |
arch: sparc64 | | | |
**packages**
The packages array is installed with `pkg install`.
A snapshot of the ports collection is available at `/usr/ports`. Git can be
used to update it to the latest commit.
**repositories**
Custom package repositories are not supported on FreeBSD builds.
## Guix System
Maintainers: jgart , (
Guix System support for builds.sr.ht is actively being maintained
[here](https://sr.ht/~whereiseveryone/builds.sr.ht-guix). There is a
[cookbook](https://man.sr.ht/~whereiseveryone/builds.sr.ht-guix-cookbook) to get
started.
Guix System |
image: guix
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armhf | | | |
arch: i686 | | | |
arch: powerpc64le | | | |
arch: x86_64 (default) |
✓ |
✓ |
daily |
**packages**
The packages are installed with `guix install`.
**repositories**
Specifying additional channels via build manifest is not supported.
## NetBSD
Maintainer: Michael Forney
Support policy: the most recent release and the version prior are supported. See
also: [upstream release cycle](https://wiki.netbsd.org/releng/)
NetBSD 9.2 |
image: netbsd/latest or
image: netbsd/9.x
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: amd64 (default) |
✓ |
✓ |
as required |
arch: armv6hf | | | |
arch: armv7hf | | | |
arch: armv7hfeb | | | |
arch: i386 | | | |
arch: mipseb | | | |
arch: mipsel | | | |
arch: mips64eb | | | |
arch: mips64el | | | |
arch: ppc | | | |
arch: sparc64 | | | |
NetBSD 8.2 |
image: netbsd/8.x
|
arch |
supported |
native |
updated |
arch: amd64 (default) |
✓ |
✓ |
as required |
arch: armv6hf | | | |
arch: armv7hf | | | |
arch: armv7hfeb | | | |
arch: i386 | | | |
arch: mipseb | | | |
arch: mipsel | | | |
arch: mips64eb | | | |
arch: mips64el | | | |
arch: ppc | | | |
arch: sparc64 | | | |
**packages**
The packages array is installed with `pkgin`.
**repositories**
Custom package repositories are not supported on NetBSD builds.
## NixOS
Maintainer: Francesco Gazzetta
Support policy: NixOS upstream does not have a clear support policy, but usually
old releases continue to get security fixes for
[a short amount of time](https://nixos.wiki/wiki/Nix_channels#The_official_channels)
after they are superseded.
We ship the latest stable version (channel `nixos-YY.MM`)
and the latest bleeding edge (channel `nixos-unstable`).
We remove old versions after they are marked as "End of life" at
[status.nixos.org](https://status.nixos.org/).
NixOS unstable |
image: nixos/unstable
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armv6 | | | |
arch: armv7 | | | |
arch: x86_64 (default) |
✓ |
✓ |
daily |
NixOS 22.11 |
image: nixos/latest or
image: nixos/22.11
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armv6 | | | |
arch: armv7 | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
NixOS 23.05 |
image: nixos/23.05
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: armv6 | | | |
arch: armv7 | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
**packages**
The packages array is installed with `nix-env -iA`. Since it's possible to
specify multiple channels, you must provide the full selection path, for example
`nixos.hello`.
**repositories**
To add custom channels, use `channel-name: channel-url`. The channel name is relevant,
since `channel-name: channel-url` will execute the commands `nix-channel --add
channel-url channel-name` and `nix-channel --update channel-name`.
Example:
```yaml
repositories:
nixpkgs: https://nixos.org/channels/nixpkgs-unstable
```
By default, no user channels are present.
However, like in a fresh NixOS installation, there is a root channel named
`nixos` set to
* `https://nixos.org/channels/nixos-XX.YY` in `nixos/latest` and `nixos/XX.YY`
* `https://nixos.org/channels/nixos-unstable` in `nixos/unstable`
which is the channel the image was built from.
**flakes**
Like in a standard Nix(OS) installation, flakes are not enabled by default.
A good way to use flakes without having to pass `--extra-experimental-features`
to every `nix` invocation is to use the
[`NIX_CONFIG`](https://nixos.org/manual/nix/stable/command-ref/env-common.html#env-NIX_CONFIG)
environment variable instead:
```yaml
environment:
NIX_CONFIG: "experimental-features = nix-command flakes"
```
## OpenBSD
Maintainer: Jarkko Oranen
Support policy: the most recent release and the version prior are supported. See
also: [upstream release cycle](https://www.openbsd.org/faq/faq5.html)
OpenBSD 7.2 |
image: openbsd/latest or
image: openbsd/7.2
|
arch |
supported |
native |
updated |
arch: alpha | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: arm64 | | | |
arch: armv7 | | | |
arch: hppa | | | |
arch: i386 | | | |
arch: landisk | | | |
arch: loongson | | | |
arch: luna88k | | | |
arch: macppc | | | |
arch: octeon | | | |
arch: power64 | | | |
arch: sparc64 | | | |
OpenBSD 7.1 |
image: openbsd/old or
image: openbsd/7.1
|
arch |
supported |
native |
updated |
arch: alpha | | | |
arch: amd64 (default) |
✓ |
✓ |
monthly |
arch: arm64 | | | |
arch: armv7 | | | |
arch: hppa | | | |
arch: i386 | | | |
arch: landisk | | | |
arch: loongson | | | |
arch: luna88k | | | |
arch: macppc | | | |
arch: octeon | | | |
arch: power64 | | | |
arch: sparc64 | | | |
**notes**
Binary patches are applied to the base system using `syspatch`.
**packages**
The packages array is installed with `pkg_add`.
**repositories**
Custom package repositories are not supported on OpenBSD builds.
## Rocky Linux
Maintainer: Haowen Liu
Rocky Linux 8 |
image: rockylinux/latest or
image: rockylinux/8
|
arch |
supported |
native |
updated |
arch: aarch64 | | | |
arch: x86_64 (default) |
✓ |
✓ |
weekly |
**packages**
The packages array is installed with `dnf install`.
**repositories**
Given the following list of repositories in your manifest:
```yaml
repositories:
example: https://example.org
```
The following commands will be used to configure it:
dnf config-manager --add-repo https://example.org
dnf config-manager --set-enabled example
## Ubuntu
Maintainer: Haowen Liu
Support cycle: all releases under standard support.
See the [upstream support schedule](https://wiki.ubuntu.com/Releases) for more
information.
Ubuntu Jammy (22.04) |
image: ubuntu/lts or
image: ubuntu/jammy or
image: ubuntu/22.04
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
daily |
arch: i386 | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Ubuntu Kinetic (22.10) |
image: ubuntu/kinetic or
image: ubuntu/22.10
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: i386 | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Ubuntu Lunar (23.04) |
image: ubuntu/next or
image: ubuntu/lunar or
image: ubuntu/23.04
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: i386 | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Ubuntu Focal (20.04) |
image: ubuntu/oldlts or
image: ubuntu/focal or
image: ubuntu/20.04
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
weekly |
arch: i386 | | | |
arch: ppc64el | | | |
arch: s390x | | | |
Ubuntu Bionic (18.04) |
image: ubuntu/oldoldlts or
image: ubuntu/bionic or
image: ubuntu/18.04
|
arch |
supported |
native |
updated |
arch: arm64 | | | |
arch: amd64 (default) |
✓ |
✓ |
monthly |
arch: i386 | | | |
arch: ppc64el | | | |
arch: s390x | | | |
**packages**
The packages array is installed with `apt-get install`.
**repositories**
To add custom repositories, specify `url release component key-id` (separated by
spaces), where `url` is the URL of the package repository, `release` is e.g.
`bionic` or `cosmic`, `component` is e.g. `main`, `contrib` or `non-free`, and
`key-id` is an optional PGP key ID to add to the system keyring. Example:
```yaml
repositories:
sr.ht: https://mirror.sr.ht/debian/sr.ht/ cosmic main DEADBEEFCAFEF00D
```
## 9front
Maintainer: Drew DeVault
Support cycle: no support guarantees are made for 9front
9front "NO THINKPAD" |
image: 9front
|
arch |
supported |
native |
updated |
arch: pc64 (default) |
✓ |
✓ |
manually |
**Caveats**
- Git submodules are not supported by git9
- 9front ships a dated Mercurial version which is not compatible with hg.sr.ht's
wire protocol
- Custom packages and custom repositories are not supported
- Shell access is not supported