Using ROCm with NixOS or Nixpkgs
2026 guide to using ROCm on NixOS by Luna NovaROCm config toggle§
Do:
- Access specific packages you want ROCm for via
pkgsRocm, such aspkgs.pkgsRocm.llama-cppandpkgsRocm.blender - Enable
config.rocmSupportfor a nixpkgs used in a purpose specific environment that uses ROCm.
Don't:
- Enable
config.rocmSupportglobally for an entire NixOS config or home-manager config
Why:
Many packages have some support for machine learning. Enabling it for all of them is at present increasing the chance you hit a build failure and possibly a reliability or security hazard.
ROCm's code quality isn't as good as browsers aim for. Firefox and thunderbird use ROCm via onnxruntime if enabled. They do sandbox in separate processes, but if you don't need it why risk it?
ROCm packages often are large, and there's no sense wasting gigabytes on them if you don't need them.
Sample:
{
# I want ROCm support for just llama-cpp and blender
environment.systemPackages = [
pkgs.pkgsRocm.blender
pkgs.pkgsRocm.llama-cpp
# … other packages accessed normally
];
}
One line run commands§
nix run llama-cpp CLI:
nix run github:nixos/nixpkgs/nixos-unstable#pkgsRocm.llama-cpp -- -hf ggml-org/functiongemma-270m-it-GGUF -c 2048 -fa 1 -p "hello" -ngl 99
nix run vLLM serve:
nix run github:nixos/nixpkgs/nixos-unstable#pkgsRocm.vllm -- serve Qwen/Qwen3-VL-4B-Instruct --max-model-len 4096 --gpu-memory-utilization 0.95 --limit-mm-per-prompt '{"image": 0, "video": 0}'
nix run blender:
nix run github:nixos/nixpkgs/nixos-unstable#pkgsRocm.blender
ROCm ISA specific build§
ROCm packages can be built for a single ISA to reduce their size.
This is only recommended if you're very storage constrained or already rebuilding ROCm packages to apply an overlay, as single ISA builds are still very expensivekpack-split.
let pkgs = import nixpkgs {
inherit system;
overlays = [
(final: prev: {
rocmPackages = prev.rocmPackages.overrideScope (
fs: ps: {
# gfx1030 = RX 6xxx, W6800
clr = ps.clr.override { localGpuTargets = [ "gfx1030" ];};
}
);
})
];
};
# `pkgs.pkgsRocm.llama-cpp` is now only built for gfx1030
See NixOS/nixpkgs#486613 rocmPackages: plan interface changes for per-ISA runtime binding (kpack) support for a proposal which may make this possible without expensive rebuilds