SkillAgentSearch skills...

Goldboot

Build golden images with CI

Install / Use

/learn @fossable/Goldboot
About this skill

Quality Score

0/100

Category

Operations

Supported Platforms

Universal

README

<p align="center"> <img src="https://raw.githubusercontent.com/goldboot/goldboot/master/.github/images/goldboot-256.png" /> </p>

License build Discord GitHub repo size Turbine Stars

<hr>

People usually don't reinstall their OS from scratch very often. When they do, chaos ensues the moment they reach that pristine desktop or terminal. Settings get changed, applications are installed, bloatware is removed, files are downloaded here and there. The system is generally altered from its original state into a new "customized" state by a manual flurry of mouse clicks and key presses.

This standard approach is like mutable infrastructure, meaning you mutate the state of your system repeatedly until it eventually suits your needs. And when something goes awry, you have to make the necessary changes to get it back in line.

For most people, mutable infrastructure works out fine until something major breaks or they have to migrate to a new computer altogether. In these cases, they probably end up starting over from scratch and reapply their changes again (and probably slightly differently this time).

Sophisticated computer elites probably practice immutable infrastructure. Meaning that, every time they boot their system, its state begins almost identically to the time before. Any changes that are made during the course of runtime vanish on reboot. This approach has some real benefits, but requires quite a bit of effort from the user.

goldboot is a tool that builds machine images for real hardware that can help you achieve something close to immutable infrastructure without creating a lot of extra work for yourself.

In the goldboot approach, you create a declarative configuration file for each machine that you want to deploy. Using this configuration, goldboot builds an image either on your local machine or on a CI platform like Github Actions. The resulting image can be deployed to real hardware via a USB drive or through PXE boot.

Warning: this tool is totally unfinshed and should be used for testing only! Proceed at your own risk!

<hr> <p align="center"> <img src="https://raw.githubusercontent.com/goldboot/goldboot/master/.github/images/overview.png" /> </p>

goldboot is approximately what you would get if docker and packer were mixed together. Instead of building containers or virtual machines, goldboot builds images for real hardware.

These machine images (also known as golden images) contain your operating system(s), applications, software patches, and configuration all rolled into one easily deployable package.

Like Docker images, your goldboot images can be stored in a registry and pulled onto real hardware.

Installation

<details> <summary>Docker</summary>

Docker Pulls Docker Image Size Docker Stars

Install from DockerHub

alias goldboot="docker run --rm -v .:/root fossable/goldboot"
</details> <details> <summary>Crates.io</summary>

Crates.io Total Downloads

Install from crates.io

cargo install goldboot
</details> <details> <summary>Arch Linux</summary>

AUR Votes AUR Version AUR Last Modified

Install from the AUR

  cd /tmp
  curl https://aur.archlinux.org/cgit/aur.git/snapshot/goldboot.tar.gz | tar xf -
  makepkg -si
</details> <details> <summary>Nixpkgs</summary>

Install from nixpkgs

</details>
nix-shell -p goldboot
<details> <summary>Github Releases</summary>

GitHub Downloads

Install manually from Github releases

curl -o /usr/bin/goldboot https://github.com/fossable/goldboot/releases/download/goldboot-v0.0.7/goldboot_<platform>
chmod +x /usr/bin/goldboot
Dependencies
apt-get install -y libudev1 libgtk-4-1 libglib2.0-0
</details> <details> <summary>Github Actions</summary>

Running on Github actions

Building golden images with CI is common practice, so there's also a Github action to make it easy:

steps:
  - name: Checkout
    uses: actions/checkout@v4

  - name: Build goldboot image
    uses: fossable/goldboot-action@main
    with:
      config-path: goldboot.json
      output-path: image.gb

  - name: Save image artifact
    uses: actions/upload-artifact@v3
    with:
      name: my_image.gb
      path: image.gb
</details>

Examples

The goldboot-examples repo contains example configurations of all supported OS types and system architectures. They are built on a weekly schedule against the latest version of goldboot.

| Linux | Windows | macos | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | Alpine x86_64 | Windows 10 x86_64 | macOS x86_64 | | Arch Linux x86_64 | | | Debian x86_64 | | | Pop!_OS x86_64 | | | Steam Deck x86_64 | | | Steam OS x86_64 | |

Example walkthrough

Let's build a basic Arch Linux ArchLinux image to prove we're real Linux users.

First, create a directory to hold our configuration (which can later be tracked in version control):

mkdir Test && cd Test

Initialize the directory and choose ArchLinux to start with:

goldboot init \
  --name Test \
  --os ArchLinux \
  --size 10G

This will create goldboot.ron which contains configuration options that can be tweaked to suit your needs. For example:

ArchLinux(
    arch: Arch(Amd64),
    size: Size("20 GiB"),
    iso: (
        url: "http://mirrors.edge.kernel.org/archlinux/iso/latest/archlinux-2026.03.01-x86_64.iso",
        checksum: None,
    ),
)

There are many ways to customize the image, but for now just build it:

goldboot build .

Once the build succeeds, the image will be saved to the system's library directory. To deploy the image to the local machine, install goldboot along with the image to your boot partition:

goldboot install --include Test

If you don't have enough storage space under /boot, you can alternatively install to a USB drive by setting --dest.

Now you should be able to boot into goldboot:

<p align="center"> <img src="https://raw.githubusercontent.com/goldboot/goldboot/master/.github/images/select_image.png" /> </p>

Select the source image and target disk and off you go.

Configuring goldboot.ron the easy way

Goldboot comes with an LSP server to make editing goldboot.ron easier. To use it, configure your editor to use goldboot lsp as an LSP server for files named goldboot.ron.

Helix

Related Skills

View on GitHub
GitHub Stars637
CategoryOperations
Updated6h ago
Forks6

Languages

Rust

Security Score

100/100

Audited on Mar 29, 2026

No findings