# Available Build Images 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 supported lifecycle of each build image is directly correlated with 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
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.8 image: alpine/latest or image: alpine/3.8
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
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
Debian Stretch (stable) image: debian/stable or image: debian/stretch
arch supported native updated
arch: arm64
arch: amd64 (default) weekly
arch: armel
arch: armhl
arch: i386
arch: mips
arch: mips64el
arch: mipsel
arch: ppc64el
arch: s390x
Debian Buster (testing) image: debian/testing or image: debian/buster
arch supported native updated
arch: arm64
arch: amd64 (default) daily
arch: armel
arch: armhl
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: armhl
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 distro component key-id` (separated by spaces), where `url` is the URL of the package repository, `distro` is e.g. `jessie` or `stretch`, `component` is e.g. `main` or `non-free`, and `key-id` is an optional PGP key ID to add to `apt-key`. Example: ```yaml repositories: sr.ht: https://mirror.sr.ht/debian/sr.ht/ stretch main DEADBEEFCAFEF00D ``` ## Fedora
Fedora 29 image: fedora/latest
arch supported native updated
arch: aarch64
arch: armhfp
arch: x86_64 (default) weekly
**Note**: Fedora support is a work-in-progress. As such, both Fedora 28 and Rawhide are currently unavailable. **packages** The packages array is installed with `dnf install`. **repositories** Given the following list of repositories in your manifest: ```yml 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
FreeBSD 12.x image: freebsd/latest or image: freebsd/12.x
arch supported native updated
arch: aarch64
arch: amd64 (default) monthly
arch: i386
arch: powerpc
arch: powerpc64
arch: sparc64
FreeBSD 11.x image: freebsd/11.x
arch supported native updated
arch: aarch64
arch: amd64 (default) monthly
arch: i386
arch: powerpc
arch: powerpc64
arch: sparc64
FreeBSD CURRENT image: freebsd/current
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`. **repositories** Custom package repositories are not supported on FreeBSD builds. ## NetBSD
NetBSD 8.x image: netbsd/latest or image: netbsd/8.x
arch supported native updated
arch: amd64 (default) monthly
arch: evbarm
arch: evbmips
arch: evbppc
arch: hpcarm
arch: i386
arch: sparc64
NetBSD 7.x image: netbsd/7.x
arch supported native updated
arch: amd64 (default) monthly
arch: evbarm
arch: evbmips
arch: evbppc
arch: hpcarm
arch: i386
arch: sparc64
NetBSD-current image: netbsd/current
arch supported native updated
arch: amd64 (default) weekly
arch: evbarm
arch: evbmips
arch: evbppc
arch: hpcarm
arch: i386
arch: sparc64
**packages** Packages with a slash in the name (e.g. `foo/bar`) are built from pkgsrc, and packages without a slash are installed via [pkgin](http://pkgin.net/). Using pkgsrc can dramatically slow down your builds, so binary packages are strongly recommended. However, binary packages are not supported on NetBSD current. To customize package options for pkgsrc, export the appropriate environment variables in your [`environment`](manifest.md#environment) configuration. You can also invoke pkgsrc manually; it is available in `/usr/pkgsrc`. **repositories** Custom package repositories are not supported on NetBSD builds. ## NixOS
NixOS 18.09 image: nixos/latest or image: nixos/18.09
arch supported native updated
arch: aarch64
arch: armv6
arch: armv7
arch: x86_64 (default) weekly
NixOS unstable image: nixos/unstable
arch supported native updated
arch: aarch64
arch: armv6
arch: armv7
arch: x86_64 (default) daily
**packages** The packages array is installed with with `nix-env -iA`. Since it's possible to specify multiple channels, you must provide the full selection path, for example `nixpkgs.hello`. Note that the `nixpkgs` channel is **not** added by default. **repositories** To add custom channels, use `repo-name: channel-url`. The repo name is relevant, since `repo-name: repo-url` will execute the commands `nix-channel --add repo-url repo-name` and `nix-channel --update repo-name`. Given the nature of nix, no channels are added by default. ## Ubuntu
Ubuntu Bionic (18.04) image: ubuntu/lts or image: ubuntu/bionic or image: ubuntu/18.04
arch supported native updated
arch: arm64
arch: amd64 (default) weekly
arch: i386
arch: ppc64el
arch: s390x
Ubuntu Cosmic (18.10) image: ubuntu/latest or image: ubuntu/cosmic or image: ubuntu/18.10
arch supported native updated
arch: arm64
arch: amd64 (default) weekly
arch: i386
arch: ppc64el
arch: s390x
Ubuntu Disco (19.04) image: ubuntu/next or image: ubuntu/disco or image: ubuntu/19.04
arch supported native updated
arch: arm64
arch: amd64 (default) daily
arch: i386
arch: ppc64el
arch: s390x
**packages** The packages array is installed with `apt-get install`. **repositories** To add custom repositories, specify `url distro component key-id` (separated by spaces), where `url` is the URL of the package repository, `distro` is e.g. `bionic` or `cosmic`, `component` is e.g. `main` or `non-free`, and `key-id` is an optional PGP key ID to add to `apt-key`. Example: ```yaml repositories: sr.ht: https://mirror.sr.ht/debian/sr.ht/ cosmic main DEADBEEFCAFEF00D ```