---
title: "Nix는 거짓말이다 — 그래픽 드라이버 앞에서 FHS를 다시 도입한 이야기"
published: 2026-03-07T23:25:21.000Z
canonical: https://jeff.news/article/267
---
# Nix는 거짓말이다 — 그래픽 드라이버 앞에서 FHS를 다시 도입한 이야기

Nix가 FHS를 배제하고 순수성을 추구하지만, 그래픽 드라이버(libGL.so)는 호스트 하드웨어에 의존하므로 /run/opengl-driver/lib이라는 관행적 경로를 재도입할 수밖에 없었다는 이야기.

- Nix의 핵심 철학은 FHS(Filesystem Hierarchy Standard)를 버리는 거임. `/usr/lib`이나 `/lib64` 같은 관행적 경로 대신 Nix store의 해시 경로를 써서 재현성을 보장하겠다는 건데... 사실 이게 완벽하진 않다는 이야기임

- 문제의 핵심은 **그래픽 드라이버**임. `libGL.so`(유저 스페이스 라이브러리)는 반드시 호스트 OS의 커널 모듈 및 실제 GPU와 매칭되어야 함. 그런데 대부분의 derivation은 어떤 하드웨어에서 돌아갈지 예측할 수 없으니 `libGL.so`를 번들링하지 않음

- "NixOS에서는 커널이랑 드라이버를 알잖아?"라고 할 수 있는데, 모든 derivation에 올바른 `libGL.so`를 포함시키면 유저마다 대규모 리빌드가 발생하고, NixOS 캐시가 사실상 무용지물이 됨

- 그래서 NixOS와 Home Manager가 택한 해결책이 **의도적인 불순물(impurity)** — `/run/opengl-driver/lib`이라는 글로벌 경로를 만들어서 derivation이 거기서 `libGL.so`를 찾도록 한 거임. 이거... 사실상 FHS를 다시 도입한 거 아닌가? ㅋㅋ

> [!NOTE]
> 이 문제는 2015년부터 열린 이슈(#9415)로, Nix를 다른 리눅스 배포판에서 쓰는 유저에게는 아직도 해결 안 된 상태임. 그래픽이 필요한 Nix 앱을 설치하면 Nix가 막으려 했던 바로 그 에러를 만나게 됨

- 우회 방법은 있음: nixGL(런타임에 `$LD_LIBRARY_PATH`로 라이브러리 주입), 수동으로 `$LD_LIBRARY_PATH` 설정, `/run/opengl-driver` 직접 만들어서 심링크 걸기 등

- 결론: "FHS를 쓰지 말라, 정말 필요할 때를 제외하고는." Nix의 순수성(purity)은 아름답지만, 현실 세계의 하드웨어 앞에서는 타협이 불가피하다는 거임. 이상과 현실의 괴리를 잘 보여주는 사례

## 핵심 포인트

- libGL.so는 호스트 커널/GPU와 매칭 필수, derivation에 번들링 불가
- NixOS가 /run/opengl-driver/lib이라는 글로벌 경로를 도입 — 사실상 FHS 재도입
- 비NixOS에서는 2015년 이슈 #9415로 아직 미해결
- nixGL, LD_LIBRARY_PATH 수동 설정 등 우회법 존재

## 인사이트

이상적인 순수성과 현실의 하드웨어 제약 사이의 타협을 잘 보여주는 사례. Nix 커뮤니티의 자기 성찰적 글
