본문으로 건너뛰기
0
r/jeffnews HN 약 3분

Nix는 거짓말이다 — 그래픽 드라이버 앞에서 FHS를 다시 도입한 이야기

devops

요약

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를 다시 도입한 거 아닌가? ㅋㅋ

ℹ️참고

> 이 문제는 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 커뮤니티의 자기 성찰적 글

댓글

댓글

댓글을 불러오는 중...

devops

살면서 몰랐던 셸 트릭 모음 — 터미널에서 Backspace 꾹 누르기 이제 그만

대부분의 개발자가 ls, cd, grep 이후로 터미널 학습을 멈추는데, 셸에는 1989년부터 존재하던 생산성 트릭들이 가득함. POSIX 범용 단축키부터 Bash/Zsh 전용 기능까지, 하루 하나씩 익히면 터미널 생활이 완전히 달라짐.

devops

Wine 11, 드디어 커널 수준에서 Windows 동기화 재설계 — FPS 678% 상승 레전드

Wine 11이 출시됐는데 이거 그냥 버전업이 아님. **NTSYNC**라는 커널 레벨 동기화 드라이버가 탑재되면서 일부 게임 FPS가 최대 678% 폭등했고, **WoW64** 아키텍처도 완성돼서 32비트 앱 실행에 더 이상 삽질 안 해도 됨. Proton이랑 Steam Deck도 혜택 받는 구조라 Linux 게이밍 역사상 손꼽히는 업데이트임.

devops

NixOS 찬양글 - 이게 바로 OS가 나아가야 할 방향 아님?

NixOS 유저가 왜 NixOS에 진심인지 열변을 토하는 글임. 핵심은 NixOS 자체보다 **Nix 패키지 매니저**의 선언적·재현 가능한 철학에 있고, LLM 코딩 에이전트 시대에 특히 더 찰떡이라고 함. Docker보다 낫다는 주장도 ㄹㅇ 공감 포인트.

devops

Nix on Windows PoC: ValidationOS VM에 Nix 패키지 매니저 탑재

Windows ValidationOS VM 이미지에 크로스 컴파일된 Nix를 사전 설치하는 PoC. 빌드 중 VM 기동 없이 guestfish로 파일을 주입하며, shell32.dll 부재 문제는 환경변수를 읽는 스텁 DLL로 해결함.

devops

GitHub, 최근 연이은 장애에 대한 상세 포스트모템 공개

GitHub이 2~3월 대규모 장애 3건에 대한 포스트모템을 공개. 트래픽 폭증, 캐시 TTL 변경, Redis 설정 문제 등이 근본 원인이었고 격리 부족과 로드 셰딩 미비가 장애를 확산시킴. Azure 마이그레이션 가속화와 모놀리스 분해로 대응 중.