Documents
Bluefin DX
Bluefin DX
Type
Topic
Status
Published
Created
Mar 20, 2026
Updated
Mar 20, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

Bluefin DX#

Bluefin DX (Developer Experience) is the developer-focused variant of Bluefin, an atomic desktop built with container-native technology and designed for cloud-native development workflows. Described as "a Linux desktop for serious developers", it extends the base Bluefin image with approximately 67 additional development packages, totaling around 160 packages that include Docker, Podman, Incus, QEMU, libvirt, Visual Studio Code, and GPU compute tools.

The DX variant embraces a container-first development philosophy where all development happens in containers rather than directly on the host. This approach complements Bluefin's image-based architecture, where the system is delivered as OCI container images using bootc for atomic updates and rollbacks. Local package layering is locked by default, preventing mutation of the base system—development dependencies live in containers instead, keeping the system image pristine and making upgrades less problematic.

Bluefin was founded by three former Ubuntu/Canonical developers and is described as "an interpretation of the Ubuntu spirit built on Fedora technology" as part of the Universal Blue project. The DX variant specifically targets developers who need comprehensive containerization, virtualization, and debugging tools without sacrificing desktop usability or system stability.

History and Development#

Bluefin DX emerged as part of the Universal Blue project's effort to create developer-focused desktop environments that embrace cloud-native workflows. The project was founded by three former Ubuntu/Canonical developers who sought to bring "an interpretation of the Ubuntu spirit built on Fedora technology" to image-based Linux desktops.

The DX variant represents a specific response to the challenges developers face working on traditional package-based systems, where dependency conflicts and system degradation can interfere with productivity. By pre-installing comprehensive containerization and virtualization tooling, Bluefin DX enables developers to work entirely within containers while maintaining a stable, unchanging base system.

Architecture and Design Philosophy#

Image-Based System#

Bluefin DX uses an image-based architecture where the system is delivered as complete OCI container images using bootc for atomic updates and rollbacks. Updates are checked automatically every 6 hours and applied on reboot, ensuring the system stays current without manual intervention. Running rpm-ostree reset and rebooting always restores the system to pure image mode, providing a reliable recovery mechanism.

Container-First Philosophy#

The DX variant's architecture makes local package layering locked by default via LockLayering=true in /etc/rpm-ostreed.conf, which prevents mutation of the base OSTree commit. This design choice isn't a limitation—it's a feature. Development dependencies belong in containers, not polluting the base OS. This approach ensures the system image remains pristine, making upgrades less problematic with no package-based degradation over time.

The container-first development approach means workflows remain OS agnostic using podman, docker, and flatpak. Local development mirrors cloud deployment using the same containers in dev, test, and production.

Pre-Installed Developer Tools#

Bluefin DX includes approximately 67 additional packages beyond the base Bluefin image, creating a comprehensive development environment out of the box. The complete package list is defined in build_files/dx/00-dx.sh.

Container and Orchestration Tools#

Docker Stack (from official Docker repository):

Podman Extensions:

System Containers and Virtual Machines#

Incus and LXC:

Virtualization Stack:

Integrated Development Environment#

Visual Studio Code is pre-installed from the official Microsoft repository with the Dev Containers extension already configured. Docker is set up as the default runtime for VS Code devcontainer workflows.

System Analysis and Debugging#

BPF/eBPF Tracing Tools:

Performance Profiling:

GPU Compute Support#

AMD ROCm:

Web-Based Management#

Cockpit Modules:

Additional Development Tools#

Base Bluefin packages also included in DX:

Differences from Standard Bluefin#

FeatureBluefin (Standard)Bluefin DX
Total Packages~93 base packages~160 total (+67 dev packages)
DockerInstall via brew install dockerPre-installed from official repository
VS CodeNot includedPre-installed with Dev Containers extension
Podman ExtensionsPodman onlypodman-compose, podman-machine, podman-tui
VirtualizationNoneQEMU, libvirt, virt-manager, virt-viewer
System ContainersNoneIncus, incus-agent, LXC
BPF TracingNonebcc, bpftrace, bpftop
AMD GPU ComputeNonerocm-hip, rocm-opencl, rocm-smi
Cockpit ManagementNonecockpit-machines, cockpit-podman, cockpit-storaged
Target AudienceGeneral users, casual developersDevelopers needing containerized workflows

Both variants are available with standard graphics or NVIDIA GPU support using proprietary drivers.

Container Development Approaches#

Bluefin DX supports four complementary approaches to containerized development, each optimized for different workflows:

1. Dev Containers#

Project-specific, reproducible development environments integrated with VS Code. Visual Studio Code comes pre-installed with the Dev Containers extension already configured, and Docker is set up as the default runtime for devcontainer workflows.

Three ways to start (from the official quickstart):

  1. Add to existing project: Command Palette → Dev Containers: Add Dev Container Configuration Files...
  2. Clone and open: Command Palette → Dev Containers: Clone Repository in Container Volume...
  3. Create from template: Command Palette → Dev Containers: New Dev Container...

Dev Container CLI (for workflows without VS Code):

brew install devcontainer
devcontainer build .
devcontainer up .
devcontainer exec . bash

The ublue-os/devcontainer repository provides a specialized container for building Universal Blue projects, including Podman, Buildah, Skopeo, cosign for image signing, syft for SBOM generation, and bootc-base-imagectl.

2. Distrobox and Toolbox#

Traditional Linux distribution environments that integrate with your home directory. The ublue-os/toolboxes repository provides a centralized collection of containers designed for Toolbox/Distrobox with Ptyxis terminal as the recommended default experience.

Available toolbox variants:

3. Docker and Podman#

Application containers for services and workloads.

Docker: Pre-installed on DX and set up as the default runtime for VS Code devcontainer workflows. On standard Bluefin, install via brew install docker. Homebrew includes containerd, enabling Docker installation from Homebrew.

Podman: The default container runtime on Bluefin, providing rootless container execution by default with Docker CLI compatibility and native systemd integration.

Podman Quadlets: systemd unit files that provide declarative container management, auto-starting on login with automatic updates and cleanup. Copy quadlet files to ~/.config/containers/systemd and enable podman-auto-update.timer for automatic midnight updates.

4. Incus#

Full system containers and virtual machines with enterprise features.

Incus is a modern system container and virtual machine manager included in Bluefin DX. It's a community-driven fork of LXD supporting:

  • System containers — Full OS simulation sharing the host kernel, near-instant start, unprivileged by default
  • VMs — QEMU-based with hardware isolation and full PCI passthrough
  • Application containers — OCI-compatible images from Docker Hub
  • Clustering up to 50 servers with live migration

Bluefin DX configuration: The bluefin-dx-groups service automatically creates the incus-admin group and adds wheel group members. Users can also run ujust dx-group for manual configuration. A dedicated incus-workaround.service fixes SELinux labels at boot.

Virtualization Support#

Bluefin DX includes a complete virtualization stack for running full virtual machines:

The bluefin-dx-groups service automatically adds users to the libvirt group. cockpit-machines provides web-based VM management accessible via the Cockpit web interface.

Installation and Setup#

Fresh Installation#

Install directly from the Bluefin DX image:

  • Standard graphics: ghcr.io/ublue-os/bluefin-dx
  • NVIDIA GPU: ghcr.io/ublue-os/bluefin-dx (nvidia-open variant)

Rebase from Standard Bluefin#

# Interactive rebase helper
ujust rebase-helper

# Or manually rebase to DX variant
sudo bootc switch ghcr.io/ublue-os/bluefin-dx:latest

System-wide Flatpaks and user Flatpak data are preserved during rebase.

Post-Installation Configuration#

# Enable developer mode (if not already on DX)
ujust devmode # then reboot

# Add yourself to developer groups (docker, incus-admin, libvirt)
ujust dx-group # not needed on Bluefin LTS

Update Streams and Versioning#

Bluefin DX is available across multiple update streams:

StreamBaseKernelUpdate Schedule
gtsFedora 42PinnedWeekly
stableFedora 43PinnedTuesdays
latestLatest FedoraUnpinnedWeekly
betaLatest FedoraUnpinnedAs-needed

System images check for updates automatically every 6 hours and apply them on reboot. Flatpak apps update daily at 4:00 AM via systemd timers with no reboot required.

GPU Support and Configuration#

NVIDIA GPUs#

The Bluefin DX NVIDIA image includes the NVIDIA Container Toolkit for GPU passthrough and sharing in containers. Configuration uses proprietary drivers with nouveau blacklisted.

Podman Quadlet configuration for NVIDIA:

[Container]
Image=pytorch/pytorch:latest
Nvidia=all
Environment=NVIDIA_VISIBLE_DEVICES=all
Volume=/home/user/models:/models

Do NOT use AddDevice=/dev/dri for NVIDIA.

AMD GPUs#

ROCm packages (rocm-hip, rocm-opencl, rocm-smi) are pre-installed in Bluefin DX for GPU compute workloads.

Intel and AMD GPU Containers#

Mount /dev/dri using AddDevice=/dev/dri:/dev/dri. If permission errors occur, run sudo setsebool -P container_use_devices=true.

Example Quadlet for Intel/AMD GPUs:

[Container]
Image=tensorflow/tensorflow:latest
AddDevice=/dev/dri:/dev/dri
Environment=DRINODE=/dev/dri/renderD128

Package Management#

Bluefin uses a three-layer package management strategy:

  1. System layer — Updated as complete OCI images via bootc
  2. Flatpak — GUI applications, auto-updated daily at 4AM
  3. Homebrew — CLI tools and developer utilities

Curated Development Bundles#

Bluefin provides curated Brewfile bundles installed via ujust bbrew:

BundleContents
ide.BrewfileVS Code, VSCodium, JetBrains Toolbox, Neovim, Helix, Micro
k8s-tools.Brewfilekubectl, helm, k9s, kind
cncf.BrewfileHeadlamp, OpenLens, Podman Desktop
ai-tools.Brewfileaichat, mods, codex, gemini-cli
cli.BrewfileGeneral CLI utilities
swift.BrewfileSwift development environment
fonts.BrewfileDeveloper fonts (Caskaydia Mono, Fira Code, etc.)

System Commands#

CommandDescription
ujust updateUpgrade system using bootc upgrade, update Flatpaks
ujust clean-systemClean Podman/Docker images, volumes, Flatpaks
ujust dx-groupAdd user to docker, incus-admin, libvirt, dialout groups
ujust bbrewInteractive menu for curated app bundle installation
ujust rebase-helperAssist rebasing to different Bluefin variants
ujust devmodeEnable developer mode (then reboot)
ujust powerwashFactory reset via bootc install reset (erases user data)

SELinux Considerations#

When mounting host directories into containers, SELinux labeling can cause permission errors. Use --security-opt label=disable when mounting directories from your home folder:

podman run -d \
  --name=myapp \
  --security-opt label=disable \
  -p 8080:8080 \
  -v /var/home/username/myapp/data:/app/data \
  docker.io/myorg/myapp

For GPU device access errors: sudo setsebool -P container_use_devices=true.

Target Audience and Use Cases#

Bluefin DX is "a Linux desktop for serious developers" targeting:

  • Developers seeking cloud-native workflows and container-first development
  • Teams needing reproducible, version-controlled dev environments via Dev Containers
  • Developers working with AI/ML workloads requiring GPU container support
  • Infrastructure and DevOps engineers needing local VMs and system containers
  • Developers who want a near-zero-maintenance OS that stays out of the way

Common use cases:

  • Full-stack development with project-specific containers
  • Cloud-native application development mirroring production environments
  • Kubernetes and container orchestration development
  • AI/ML model development with GPU acceleration
  • Multi-tenant infrastructure testing with Incus clustering
  • Cross-platform development with OS-agnostic workflows

Relevant Code Files#

FileDescriptionRepository
build_files/dx/00-dx.shDX package installation script (~67 developer packages)ublue-os/bluefin
build_files/base/04-packages.shBase package installation (~93 packages)ublue-os/bluefin
build_files/shared/build-dx.shDX build scriptublue-os/bluefin
system_files/dx/usr/bin/bluefin-dx-groupsAutomatic group configuration (docker, incus-admin, libvirt)ublue-os/bluefin
system_files/dx/usr/lib/systemd/system/incus-workaround.serviceIncus SELinux fix serviceublue-os/bluefin
system_files/dx/usr/share/ublue-os/user-setup.hooks.d/10-vscode.shVS Code Dev Containers extension auto-install hookublue-os/bluefin
system_files/bluefin/usr/share/ublue-os/just/system.justSystem management justfile (ujust commands)projectbluefin/common
  • Bluefin — Base operating system
  • Universal Blue — Parent project
  • Dev Containers — Development container specification
  • Incus — System container and VM manager
  • Podman — Daemonless container engine
  • Docker — Container platform
  • Distrobox — Container-based development environments
  • bootc — Bootable container technology
  • Flatpak — Application distribution framework
  • Homebrew — Package manager

See Also#