콘텐츠로 이동

API 레퍼런스

각 모듈은 하나의 Nix 개념을 자체적으로 완결된 형태로 구현합니다. 외부 의존성 없이 표준 라이브러리만 사용합니다.

모듈

모듈 줄 수 구현 내용
pix.base32 ~40 Nix base32 인코딩 — 커스텀 알파벳, 역순 비트 추출
pix.hash ~20 SHA-256 래퍼 + XOR-폴드 압축
pix.nar ~80 NAR 아카이브 직렬화 (파일, 디렉터리, 심링크)
pix.store_path ~70 text, source, fixed-output, derivation 출력의 스토어 경로 핑거프린팅
pix.derivation ~250 ATerm 파서/시리얼라이저 + hashDerivationModulo
pix.daemon ~270 Unix 소켓 클라이언트: 핸드셰이크, stderr 드레이닝, 스토어 오퍼레이션

pixpkgs 모듈

모듈 줄 수 구현 내용
pixpkgs.drv ~140 drv() 생성자 + Package 데이터클래스 — mkDerivation 등가물
pixpkgs.package_set ~30 call()을 가진 PackageSetcallPackage 등가물
pixpkgs.realize ~30 .drv를 스토어에 쓰고 데몬으로 빌드

의존성 그래프

pixpkgs
  drv ─────────── derivation + store_path
  package_set     (독립적 — inspect만 사용)
  realize ──────── daemon

pix
  daemon  (독립적 — 와이어 프로토콜만)

  store_path ─── hash
      │            │
      └── base32   │
  nar ─────────────┘

  derivation ─── hash

순환 의존성 없음. daemon은 완전히 독립적입니다 — 로컬 해시 계산 없이 바이너리 프로토콜을 직접 사용합니다.

코드 읽기

모듈들은 위에서 아래로 읽도록 설계되어 있습니다. 각 파일은 형식이나 프로토콜을 설명하는 docstring으로 시작한 다음, 가장 직관적인 방식으로 구현합니다.

알고리즘이 그런 방식으로 동작하는지 이해하려면 내부 구조 섹션을 참고하세요. 어떻게 구현되어 있는지 보려면 소스를 직접 읽으세요 — 전부 pix/pixpkgs/에 있습니다.