Nix는 한 가지 급진적인 생각 위에 세워졌어. 패키지 설치는 입력에 대한 순수 함수여야 한다는 거야. 입력이 같으면 어떤 컴퓨터에서 몇 번 실행하든 비트 단위로 같은 결과가 나와야 해. Nix의 강력한 기능과 낯선 모습은 모두 이 원칙에서 시작돼.
장점은 분명해. 원자적 업그레이드 덕분에 반쯤 바뀐 상태가 남지 않고, 업그레이드는 완전히 성공하거나 이전 상태를 그대로 유지해. 여러 버전의 공존으로 Python 3.10과 3.13을 동시에 설치해 프로젝트별로 쓸 수 있어. 오늘의 변경이 개발 환경을 깨뜨리면 nix-env --rollback으로 즉시 롤백할 수 있지. 저장소의 flake.nix는 운영체제나 기존 PATH와 무관하게 모든 팀원에게 같은 OpenSSL, Python, Postgres를 제공하는 재현 가능한 개발 환경을 만들어. 여기에 80,000개가 넘는 패키지를 가진 거대한 nixpkgs까지 더해져.
낯선 점도 뚜렷해. Nix에는 같은 이름의 순수 함수형 설정 언어가 있고, 공식 문서는 오랫동안 간결하면서도 학술적인 문체였어. 오류 메시지도 이해하기 어렵기로 유명하지. 학습 곡선은 이 퀘스트에서 가장 가파르므로, 몇 시간이 아니라 몇 주 동안 조금씩 익힐 시간을 잡는 편이 현실적이야.
Mac 개발자에게 가장 값진 쓰임은 flakes로 만드는 프로젝트별 개발 환경이야. 시스템 전체의 Homebrew를 Nix로 바꾸지 않아도 프로젝트에 flake.nix를 넣으면, 모든 기여자가 첫 nix develop에서 정확히 같은 도구 버전을 받아. '내 컴퓨터에서는 되는데'라는 문제를 크게 줄일 수 있어.