NixOS-DGX-Spark brings Nix and NixOS to NVIDIA's DGX Spark

GitHub user graham33 published NixOS-DGX-Spark, a project offering two paths for running Nix-based tooling on NVIDIA's DGX Spark hardware: use Nix devshells and playbooks on top of the factory NVIDIA DGX OS (Ubuntu-based) without touching the base system, or install NixOS on the DGX Spark directly for the full Nix experience. Both routes also work on the Asus Ascent GX10, a rebadged version of the same hardware. The repository ships USB installer images and a NixOS module with DGX Spark specific hardware options.
The NixOS installer offers two kernel choices at boot, selectable from the GRUB menu. The default option uses a custom NVIDIA-specialised kernel with full GPU support and working Ethernet; the alternative is the standard NixOS 6.17 kernel, which the documentation says has Ethernet problems. The NVIDIA kernel's configuration is generated from NVIDIA's own Debian kernel annotations, compared against NixOS defaults, and reduced to only the differing options, which the author says cuts configuration verbosity by about 82%. A nix run .#generate-kernel-config command lets users regenerate that configuration when the NVIDIA kernel version or the NixOS baseline changes. Installing NixOS also enables a DGX Dashboard web interface, served locally on port 11000, for GPU telemetry and system monitoring.
Installing NixOS is not the factory default path: the documentation states that only DGX OS can boot from the machine's factory firmware, so firmware has to be updated first (the module enables fwupd, and NVIDIA publishes DGX Spark firmware updates to the Linux Vendor Firmware Service). After that, Secure Boot must be disabled and the machine booted from the USB image before following the standard NixOS manual installation steps. The project also documents a remote, headless install path using nixos-anywhere, but flags it explicitly as untested and to be used at the user's own risk.
For build performance, the project relies on two binary caches: Flox, which distributes prebuilt CUDA packages for aarch64-linux (including the CUDA toolkit, NCCL, cuDNN and PyTorch) with NVIDIA's permission, cutting build times; and a Cachix cache run by the author himself for packages built directly by the repository, such as the DGX Dashboard. Anyone using the DGX Spark NixOS module gets the Flox cache configured automatically. graham33 also gave a five-minute lightning talk introducing the project at the Planet Nix event, linked from the repository.
Key facts
- NixOS-DGX-Spark, published by GitHub user graham33, offers either Nix devshells on stock NVIDIA DGX OS or a full NixOS install, and works on both the DGX Spark and the Asus Ascent GX10.
- The NixOS installer's default kernel is a custom NVIDIA build with full GPU and Ethernet support; the alternative standard NixOS 6.17 kernel has Ethernet problems, per the project documentation.
- Trimming the NVIDIA kernel config to only the options that differ from NixOS defaults cuts its verbosity by about 82%.
- Installing NixOS is not the out-of-the-box path: only the factory DGX OS can boot on unmodified firmware, so firmware must be updated first, and the remote install method via nixos-anywhere is explicitly marked as untested.
- The project leans on two binary caches for build speed, Flox for prebuilt CUDA packages on aarch64-linux and the author's own Cachix cache, plus a DGX Dashboard web UI on port 11000 for GPU telemetry.
Why it matters
DGX Spark is NVIDIA's compact desktop AI computer, and its stock software is DGX OS, an Ubuntu derivative. NixOS-DGX-Spark is a community project that opens that hardware to Nix's reproducible-build model, either as an add-on to the factory OS or as a full replacement, without requiring NVIDIA's own involvement. Reproducible CUDA environments are a common pain point for AI infrastructure, and this project targets that gap for a specific, fairly new device.
Who it affects
DGX Spark and Asus Ascent GX10 owners who already use, or want to adopt, Nix or NixOS for reproducible development environments, particularly anyone building CUDA-dependent tooling who wants to avoid manual dependency management on top of DGX OS.
How to use it
Two entry points exist. On the stock DGX OS, install Nix (official installer or the Determinate Nix Installer), enable flakes, and use the repository's devshells and playbooks directly; non-NixOS systems need nix-gl-host to locate GPU drivers, which the devshells handle automatically. To install NixOS itself, first update the DGX Spark's firmware from DGX OS (required, since only DGX OS boots on factory firmware), then disable Secure Boot, build and write the USB image with nix build .#usb-image, and boot from it to follow the standard NixOS manual install, choosing the NVIDIA-optimised kernel by default. A flake template (nix flake init -t github:graham33/nixos-dgx-spark#dgx-spark) generates a starter configuration, and a hardware.dgx-spark NixOS module can also be imported into other flakes. A remote, headless install via nixos-anywhere is documented but untested.
How solid is it
The repository was live on Hacker News with 103 points and 31 comments at the time of writing, and the author gave a five-minute talk on it at the Planet Nix event. The kernel configuration is generated systematically from NVIDIA's own Debian kernel annotations rather than hand-maintained, and CUDA packages come from Flox with NVIDIA's stated permission to redistribute prebuilt binaries. The source text gives no information on the author's affiliation, no release date, and no independent benchmarks comparing this setup to stock DGX OS.
Risks and caveats
The project itself flags two rough edges: the standard, non-NVIDIA NixOS kernel has Ethernet problems, and the remote nixos-anywhere install path is explicitly untested, described as use at your own risk. Installing NixOS also requires a firmware update and disabling Secure Boot, both of which touch the machine at a low level. Nothing in the source indicates NVIDIA endorses or supports the project.