ADR-0007: WSL Is a Headless Validation Target
Status: accepted
Context
Dubnium needs a fast way to validate shared flake composition, module wiring, and mode-controller behavior before every change has to run on the bare-metal workstation target.
WSL is useful for that loop, but it is not equivalent to the real workstation. It does not validate EFI, bootloader behavior, workstation hardware generation, Hyprland, audio/studio behavior, NVIDIA runtime details, or final GPU topology.
The upstream nix-community/NixOS-WSL project already owns the WSL-specific
boot and integration layer. Reimplementing that locally would create another
platform surface for Dubnium to maintain before there is evidence that it is
needed.
Decision
Keep wsl as a first-class flake host target for headless validation, built on
top of nix-community/NixOS-WSL.
Use .#wsl to validate shared Dubnium composition and headless services inside
an existing NixOS-WSL distro. Set its default Dubnium mode to compute, enable
the shared mode controller, and keep resource-heavy services such as vllm and
k3s disabled by default. Enable those services intentionally when the task is
specifically to validate their WSL runtime behavior.
Do not treat .#wsl as a replacement for .#workstation, the bare-metal
install path, or workstation hardware validation.
Consequences
- Shared module wiring and activation can be exercised from a faster Windows/WSL loop.
- WSL-specific platform support stays delegated to the upstream NixOS-WSL module.
- The WSL target remains intentionally headless, compute-biased, and lightweight.
- Passing WSL validation does not prove workstation graphics, audio, bootloader, EFI, NVIDIA, or final GPU behavior.
- WSL runbooks and checks must stay separate from bare-metal first-bring-up and fresh-install procedures.
Escalation Criteria
Reconsider the WSL target shape if:
- upstream NixOS-WSL no longer supports the required system integration points
- WSL behavior diverges enough from Dubnium’s shared module graph to make the target misleading
- bare-metal validation becomes cheap and reliable enough that a separate WSL target no longer reduces risk or cycle time