Bluefin Developer Experience (
bluefin-dx) is a dedicated developer image with bundled tools. Unlike traditional Linux systems, the operating system and developer environment are explicitly and purposely separated.
This means that tooling is not installed on the host, and is instead containerized, in a virtual machine, or scoped to the user’s home directory. It is designed to meet the following use cases:
- Endeavors to be the world’s most powerful cloud native developer environment
- Full virtualization support
- Provide fleet management of Bluefin and other Linux systems via Cockpit (Incomplete, needs a volunteer!)
Bluefin goes “all in” on cloud native development and is used differently than a traditional distribution such as Ubuntu:
- GUI apps are installed via Flatpak
- Development is done in devcontainers
- Command line applications are installed using homebrew
- Preconfigured ad-hoc containers for Ubuntu, Fedora, Wolfi, and a custom
bluefin-clicontainer. Use whichever distribution you want.
We strive to remove host level package management completely and consider these components as seperate layers. Communication between components is typically done via Flatpak Portals or via the container runtime.
This differs from apt, snap, and dnf where one packaging system handles both the graphical applications AND the command line applications. This decoupling is what provides greater system reliability, near unlimited choice of software, and “distributed by default” development.
In short, we picked it because this pattern is how servers are deployed in modern infrastructure. And the developers deploying those systems are already using homebrew and we want to leverage as much of that success as possible for the Linux desktop.
The pattern in
bluefin-dx is centered around container focused development using devcontainers. Since development is not dependent on the operating system image, you can use whatever you want, you do not need to use everything in here in order to be productive – think of them as prepaved paths that you can choose to use.
Dev Containers were chosen to facilitate distributed development, each project has a declarative environment that is intended to be start the user with a “best practice” cloud-native workflow out of the box. The Ultimate Guide to Dev Containers has a good write up of the advantages of using devcontainers.
Homebrew can also be used for installation of development tools.
Note: This is an opinionated developer workflow that differs from Fedora’s use of toolbox. Toolbox is included for people who prefer the upstream approach.
Any Bluefin machine can turn on DX mode, ISOs are also provided for new installations.
Recommended for developers with AMD and Intel based GPUs (3.7GB, based on Fedora 38)
Recommended for developers with Nvidia GPUs (5.4GB, based on Fedora 38)
- If you are an experienced user who is comfortable troubleshooting and contributing feedback use: bluefin-dx-latest.iso (checksum) / bluefin-dx-nvidia-latest.iso (checksum)
You can rebase to
bluefin-dx by using the following command:
Step 1 of 2 -
ujust devmode to enable or disable the dx mode, then reboot:
Step 2 of 2 -
ujust dx-group - to add your user account to the right groups. Then log out and back in. This step only needs to be done once.
Like all Universal Blue images, switching is atomic, allowing for clean switching between modes depending on the use case.
- Cockpit for local and remote management
- A collection of well curated monospace fonts
- Tailscale for VPN
- Just task runner for post-install automation tasks. Check out our documentation for more information on using and customizing just.
zshavailable as optional shells, use
ujust zshand follow the prompts to configure them
Visual Studio Code is included on the image as the default IDE. It comes with the devcontainers extension already installed. It’s the recommended developer experience, start here if you’re new to containerized development!
- Dev Containers Documentation - you can skip most of the installation instructions and go directly to the tutorial
- Dev Containers Specification
- Beginner’s Series to: Dev Containers - great introductory tutorial from the VS Code YouTube channel
The most current Docker Engine is included by default and is set up to be the default container runtime for vscode. DevPod is included to use devcontainer functionality across clouds and self-hosted setups.
- Follow Quickstart VS Code to set up the environment.
Manage your containers with Ptyxis’s built in container support:
Ptyxis also includes a host terminal so that you can quickly switch between containers and the host.
- Further instructions on using Ptyxis: Setting up the Ptyxis Terminal
ujust jetbrains-toolbox will fetch and install the JetBrains Toolbox application, which will manage the installation of the JetBrains set of tools. This application will handle installation, removal, and upgrade of the JetBrains products, and is handled completely in your home directory, independent of the operating system image.
- kind - Run a Kubernetes cluster on your machine. Run
kind create clusteron the host to get started!
- kubectl - Administer Kubernetes Clusters
- helm, ko, flux, minio-client – if it’s an incubated project we intend to add it where appropriate
- virt-manager and associated tooling (KVM, qemu)
- Incus provides system containers
All the upstream
podman tools are included. This is the default system container runtime, and is the recommended developer configuration that Fedora ships with.
- Install the Podman Desktop application for graphical use.
bluefin-dxdefaults to docker and vscode for development, all of the Fedora upstream tools are included for those that prefer that experience.