Unofficial Redox OS Repository Builder, builds these in GitHub CI:
- Packages similar to static.redox-os.org/pkg
- Toolchains similar to static.redox-os.org/toolchain
As of June 2025, Redox OS supports custom repository, see how.
- I have forks and I wanted to test it without waiting the official build server
- I don't want to compile heavy packages in my own laptop
I have prebuilt packages repos for myself on https://redox-build.wellosoft.net/pkg/
.
To use my prebuilt package in existing RedoxOS:
- Download and run latest images
- Run
sudo echo "https://redox-build.wellosoft.net/pkg/" > /etc/pkg.d/40_custom
- Run
sudo pkg install ...
any pkgs you want
To make your own version, please fork this repository.
I have build toolchains for my own personal use:
- x86_64 toolchain the toolchain for Intel/AMD linux compatible for Ubuntu/Pop! OS 22
- aarch64 toolchain the toolchain for Podman in MacOS without Rosetta, or for other ARM based Linux
To use these toolchain in your Redox build system, please patch mk/prefix.mk
:
- wget -O [email protected] "https://static.redox-os.org/toolchain/$(TARGET)/relibc-install.tar.gz"
+ wget -O [email protected] "https://redox-build.wellosoft.net/toolchain-$(HOST_ARCH)/$(TARGET)/relibc-install.tar.gz"
And mk/config.mk
(if your system is aarch64, also see guide for MacOS):
-ifneq ($(HOST_TARGET),x86_64-unknown-linux-gnu)
- $(info The binary prefix is only built for x86_64 Linux hosts)
+ifneq ($(HOST_TARGET),$(HOST_ARCH)-unknown-linux-gnu)
+ $(info The binary prefix is only built for $(HOST_ARCH) Linux hosts)
Fork, clone this repo, and run bash setup-full.sh
.
Go to Actions
tab and enable CI there. Then, go to Run setup-full.sh
and click Run Workflow
.
Make sure the GitHub action has read and write access (the menu is in Settings > Actions > [scroll down] Read and write permissions).
I've built them
this way:
env PLATFORM="linux/amd64,linux/arm64" TAG="willnode/redox-os-builder"
docker buildx build --platform $PLATFORM -f Dockerfile-pkg -t $TAG:pkg . --push
docker buildx build --platform $PLATFORM -f Dockerfile-toolchain -t $TAG:toolchain . --push
The difference is pkg
is based on Ubuntu 24 (While be using official toolchain which happens to have compatible GLIBC) while toolchain is Ubuntu 22 (to allow lower GLIBC).
First, make sure that there are files in gh-pages
branch.
Go to settings, pages, Choose deploy from branch and set the branch as gh-pages
.
It's a public key for pkg
utils verifiying signatures in .pkgar
files. By default, it's generated and changed every time you want to rebuild.
To persist it across builds, add PRIVATE_KEY
and PUBLIC_KEY
to action secrets. The value can be obtained from cookbook/build/id_ed25519.toml
and cookbook/build/id_ed25519.pub.toml
after doing local build.
Note that GitHub secrets can't have multi line so you need to replace it with commas. With that, the typical format for PRIVATE_KEY
value should be:
salt = "XXX", nonce = "YYY", skey = "ZZZ"
Interesting question. The last build took 90 minutes with 25GB storage on /mnt
storage. The GitHub CI is generous enough even without subscription. Free GitHub account gives you free 2000 minutes CI and apparently 70GB in /mnt
storage. Just read here for GitHub runners.
Generally I think you can cook all recipes if you wish, but it will definitely take longer. Currently I don't cook compilers like LLVM, Cargo and RustPython or even other stuff like games because it's not necessary to me yet.
Of 90 minutes cook recipe from last build, it consist of 8 minutes building tooling and 7 minutes on fetching. It's counting about 66 recipes. The detailed timeline is this:
2025-06-09T00:41:32.5758317Z - start
2025-06-09T00:49:36.7999268Z - prefix done
2025-06-09T00:56:27.9442671Z - fetch.sh done
2025-06-09T02:09:39.2612776Z - repo.sh done
2025-06-09T02:09:47.8987185Z - done
Incremental builds requires PRIVATE_KEY
and PUBLIC_KEY
set since initial full build. You can't set it after initial full build otherwise the public keys will be invalid for old pkgar files.
After pushing your own changes in the repo, you can run Run setup-partial.sh
GitHub Action. There will be an input about list of recipes you want to update — for example if you put "nano vim" then the CI will run make prefix f.nano r.nano f.vim r.vim
and updates the repo files and repo.toml accordingly.
I think there's no tool for that yet, but I made online viewer for it.