NixOS-DGX-Spark: NVIDIA DGX Spark 및 Asus Ascent GX10에서 Nix와 NixOS 실행
개요
NixOS-DGX-Spark 저장소는 NVIDIA DGX Spark 및 호환 가능한 Asus Ascent GX10 장치를 위한 완전한 Nix 기반 솔루션을 제공합니다. 여기에는 NixOS 모듈, 사전 구축된 USB 이미지, 그리고 사용자가 기존 DGX OS(Ubuntu) 위에서 Nix를 실행하거나 시스템을 전체 NixOS 설치로 교체할 수 있게 해주는 devshell 플레이북이 포함됩니다.
DGX OS(Ubuntu)에서 Nix 사용하기
저장소의 dev shells와 플레이북을 DGX OS에 NixOS를 설치하지 않고도 사용할 수 있습니다. 설정에는 Nix를 설치(공식 설치 프로그램 또는 Determinate 설치 프로그램 사용)하고, /etc/nix/nix.conf에 nix-command와 flakes 실험적 기능을 활성화하며, 저장소의 Caching 섹션에 설명된 대로 graham33 Cachix 캐시를 추가하는 것이 필요합니다. 설정이 완료되면 nix develop .#cuda와 같은 명령이 numtide/nix-gl-host 프로젝트의 nixglhost로 GPU‑종속 바이너리를 자동으로 래핑하므로 드라이버를 수동으로 다룰 필요가 없습니다.
DGX Spark에 NixOS 설치하기
저장소에 있는 경고에 따르면 공장 출하 시 DGX OS 펌웨어만으로는 장치를 부팅할 수 있으며, NixOS를 실행하려면 먼저 DGX OS 내부에서 펌웨어를 업데이트해야 합니다. 이 단계가 끝나면 nix build .#usb-image로 부팅 가능한 USB 이미지를 만들고 dd를 사용해 USB 드라이브에 기록할 수 있습니다. 이미지에는 GRUB에서 두 가지 커널 옵션이 표시됩니다:
- NixOS (기본) – DGX Spark용 NVIDIA 맞춤 커널을 사용하여 전체 GPU 지원 및 정상적인 이더넷을 제공합니다.
- NixOS (standard-kernel) – 일반 NixOS 6.17 커널을 사용하며, 문서에 따르면 이더넷 문제가 있습니다. 부팅하려면 BIOS에서 Secure Boot를 비활성화하고 표준 NixOS 설치 매뉴얼을 따라야 합니다.
DGX Spark NixOS 모듈
저장소의 NixOS 모듈(hardware.dgx-spark)은 하드웨어 지원을 캡슐화합니다. 핵심 옵션은 다음과 같습니다:
hardware.dgx-spark = {
enable = true; # 모듈 활성화
useNvidiaKernel = true; # 기본값: NVIDIA 최적화 커널 사용
};
useNvidiaKernel = true일 경우 모듈은 NVIDIA의 Debian 주석에서 빌드된 커널을 가져오며, NixOS 기본값과 필요한 부분만 다르게 구성합니다—이 과정으로 구성 크기가 약 82 % 감소합니다. 또한 모듈은 GPU 텔레메트리와 시스템 모니터링을 위한 DGX Dashboard 웹 인터페이스를 http://localhost:11000에서 활성화합니다.
표준 NixOS 커널을 선호한다면(네트워킹 제한이 있음), useNvidiaKernel = false로 설정하면 됩니다.
커널 구성 관리
커널 구성 파일은 kernel-configs/nvidia-dgx-spark-<version>.nix에 위치합니다. 이는 NVIDIA의 주석이 달린 커널 소스와 NixOS 기본 구성을 비교하여 차이점만 남기는 방식으로 생성됩니다. 커널이나 nixpkgs 업데이트 후 재생성하려면 다음을 실행합니다:
nix run .#generate-kernel-config
이 명령은 NVIDIA 커널 소스를 가져오고, NixOS 기본 구성을 빌드한 뒤 두 파일을 비교해 간결한 diff 기반 구성을 작성합니다. NVIDIA 커널 버전이 바뀔 때(kernel-configs/nvidia-kernel-source.nix 업데이트) 또는 nixpkgs에서 공통 NixOS 커널 구성이 바뀔 때 재생성이 필요합니다.
모듈 가져오기
다른 flake에서 모듈을 사용하려면 다음과 같이 입력합니다:
{
inputs.dgx-spark.url = "github:graham33/nixos-dgx-spark"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; # 예시
outputs = { nixpkgs, dgx-spark, ... }:
nixosConfigurations.mySystem = nixpkgs.lib.nixosSystem {
modules = [
dgx-spark.nixosModules.dgx-spark
{ hardware.dgx-spark.enable = true; }
# 추가 모듈
];
};
}
빠른 시작 템플릿도 제공됩니다: nix flake init -t github:graham33/nixos-dgx-spark#dgx-spark를 실행하면 flake.nix, configuration.nix, 그리고 /etc/nixos에 복사해 sudo nixos-rebuild switch --flake /etc/nixos#dgx-spark로 적용하기 전에 커스터마이즈할 수 있는 하드웨어‑구성 템플릿이 포함된 디렉터리가 생성됩니다.
플레이북
저장소는 NVIDIA DGX Spark 예제를 기반으로 만든 devshell‑기반 플레이북 세트를 번들링합니다. 각 플레이북은 재현성 수준에 따라 라벨링됩니다:
- Full Nix² – 모든 의존성을 Nix를 통해 획득, 컨테이너 없음.
- Container³ – Nix가 도구(podman 등)를 제공하지만 컨테이너는 런타임에 풀/빌드.
- Nix + Container⁴ – CLI 도구는 Nix 패키지, 실제 작업은 컨테이너가 관리.
README 표에는 ComfyUI, Connect Two Sparks, DGX Dashboard, FLUX.1 Dreambooth, Multi‑Agent Chatbot, Multi‑modal Inference, NCCL for Two Sparks, NVFP4, OpenShell, PyTorch fine‑tuning(컨테이너 및 네이티브 Nix), Speculative Decoding, TRT‑LLM, vLLM(컨테이너 및 네이티브) 등 다양한 플레이북이 나열됩니다. 체크표시는 해당 플레이북이 NixOS와/또는 DGX OS에서 테스트되었는지를 나타냅니다. 예를 들어 ComfyUI와 DGX Dashboard 플레이북은 두 플랫폼 모두에서 동작한다고 표시되어 있으며, NVFP4와 OpenShell은 NixOS에서만 테스트되었습니다.
캐싱
대용량 CUDA 스택 재빌드를 피하기 위해 프로젝트는 두 개의 바이너리 캐시 사용을 권장합니다:
- Flox CUDA cache – NVIDIA 허가 하에 aarch64‑linux용 cudatoolkit, nccl, cuDNN, PyTorch 등을 제공합니다. DGX Spark NixOS 모듈을 사용할 경우 Flox 캐시가 자동으로 서브스티튜터로 추가됩니다. DGX OS에서 독립적인 Nix를 사용할 경우
/etc/nix/nix.conf에 다음을 추가합니다:extra-substituters = https://cache.flox.dev extra-trusted-public-keys = flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs= - graham33 Cachix cache – 이 저장소 전용으로 빌드된 아티팩트(dgx-dashboard, openshell 등)를 호스팅합니다.
cachix use graham33를 실행해 사용합니다(먼저 cachix 도구를 설치해야 함).
펌웨어 업데이트
공장 펌웨어는 DGX OS만 부팅할 수 있기 때문에, NixOS 부팅을 시도하기 전에 DGX OS 내부에서 펌웨어를 업데이트하라고 저장소에서 권고합니다. 모듈은 fwupd를 활성화하여 다음 명령으로 업데이트를 확인하고 적용할 수 있게 합니다:
fwupdmgr get-updates
fwupdmgr update
이 명령은 NVIDIA가 DGX Spark 펌웨어를 게시하는 Linux Vendor Firmware Service(LVFS)와 통신합니다.
실험적 원격 설치
실험 섹션에서는 nixos-anywhere를 사용해 SSH를 통해 NixOS를 설치하는 방법을 설명합니다. 다음 명령은 NVMe 디스크를 파티션하고 DGX Spark 모듈이 활성화된 시스템을 설치합니다:
nix run github:nix-community/nixos-anywhere -- --flake github:graham33/nixos-dgx-spark#dgx-spark root@<ip>
검증을 위한 VM‑테스트 모드도 제공됩니다.
커뮤니티 피드백
Hacker News 게시물에 달린 댓글은 초기 채택자들의 경험을 강조합니다:
"Huge plus to anyone interested in the space to check out what Graham built!" – @ronef
"This is incredible. I have a Jetson lying around and will try to it out on this." – @thenobsta
"Been running this on a few Asus GX10 machines with k3s on top, it’s been great. I’m running the new deepseek." – @redrove
"Thanks for sharing, saving this for when I get a DGX Spark" – @haunter
"This has been amazingly helpful for managing my DGX Spark! Thank you for all your time and effort into this project!" – @nixie-tubes
"Claude Code (and likely other models/harnesses) are incredibly effective at Nix. It can trivially self‑verify, without side effects, which is a perfect match for an LLM." – @hamandcheese
"There is also a microvm.nix project which helped us support sandboxes with firecracker. So, whole ai workflow pipeline can now be nixos." – @mkagenius
이러한 발언은 엣지 AI 하드웨어에서 Nix를 사용하는 것에 대한 열정, Asus GX10에서 Kubernetes(k3s)와 결합하려는 관심, 그리고 Nix가 제공하는 재현성 및 자체 검증 특성에 대한 감사의 뜻을 반영합니다.
라이선스
이 프로젝트는 MIT License 하에 배포됩니다; 자세한 내용은 포함된 LICENSE 파일을 참고하십시오.