C.W.K.
Stream
Lesson 01 of 05 · published

Nix 가 왜 존재하나 (그리고 왜 어렵나)

~12 min · nix, overview, declarative

Level 0초심자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

Nix 는 단 하나의 급진적 아이디어 위에 세워졌어 — 패키지 install 은 입력의 순수 함수여야 한다. 같은 입력, 같은 출력 — 매번, 모든 머신에서, bit 단위. 이 한 아이디어에서 Nix 의 모든 슈퍼파워와 모든 이상함이 흘러나와.

슈퍼파워는 진짜야. Atomic 업그레이드 — 절대 반쯤 업그레이드된 상태가 없음; 업그레이드는 완전히 성공하거나 시스템이 정확히 이전과 같음. 다중 버전 공존 — Python 3.10 과 3.13 동시 install 해서 프로젝트별 사용 가능, 충돌 없음. 즉시 rollback — 오늘 업그레이드가 dev 환경 깼으면 nix-env --rollback 1초에 되돌림. 재현 가능 dev 환경 — repo 의 flake.nix 가 모든 팀원에게 첫 nix develop 에서 같은 OpenSSL, 같은 Python, 같은 Postgres 줘 (OS 무관). 세계 최대 패키지 저장소 — nixpkgs 는 80,000+ 패키지, Homebrew, MacPorts, AUR, 어떤 distro repo 보다 큼.

이상함도 진짜야. Nix 는 자기 순수 함수형 설정 언어 갖고 있어 (Nix 라고도 불림). 공식 문서가 역사적으로 얇고 학문적. 에러 메시지 악명 높게 cryptic. 학습 곡선 이 quest 에서 가장 가파름 — 시간 단위 아니라 part-time 학습 몇 주 budget.

Mac 개발자에겐 Nix 가 프로젝트별 dev 환경 (flakes 통해) 으로 가장 가치 있어. 시스템 전체 Homebrew 를 Nix 로 안 바꿔도, 프로젝트에 flake.nix 떨구면 모든 contributor 가 첫 nix develop 에 같은 도구 버전 받음 — 'works on my machine' 디버깅 0.

Code

Nix 가 다른 PM 이 안 주는 거·text
  Atomic 업그레이드      - 절대 반쯤 업그레이드 안 됨; 한 명령으로 rollback
  다중 버전              - Python 3.10 + 3.13 + 3.14, 충돌 0
  재현 가능 빌드         - 같은 flake = 같은 binary, 매번
  프로젝트별 환경        - 'nix develop' 으로 프로젝트 도구 진입
  80,000+ 패키지         - 존재하는 단일 패키지 repo 중 최대
  Cross-platform         - 같은 flake 가 macOS / Linux 둘 다에서
  함수형 설정 언어       - 명령형 아니라 선언형

비용: 내재화 몇 주. 보상: drift 없는 도구.

External links

Exercise

https://search.nixos.org/packages 열고 정기적으로 쓰는 도구 셋 검색 (예: ripgrep, ffmpeg, postgresql). 적어 — 모두 nixpkgs 에 있고, 모두 재현 가능, 모두 한 줄로 프로젝트 flake.nix 에 추가 가능. nixpkgs 의 크기가 안 알려진 셀링 포인트.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.