Nix
CLI이자 패키지 관리자이자 프로그래밍 언어
먼저 Nix 빠른 시작부터 따라가고, 개념 문서는 주로 보충 설명이 필요할 때 참고하기를 권합니다. 오른쪽의x를 누르면 모든 개념 문서에서 이 안내를 숨길 수 있습니다.
Nix는 여러 가지를 가리키기 때문에 다소 헷갈릴 수 있는 용어입니다:
- 순수 함수형 프로그래밍 언어
- Nix CLI
- Nix 패키지 관리 시스템 전반
이들은 모두 서로 밀접하게 연관되어 있으므로 하나의 도구로 생각해야 합니다. 이 문서에서는 Nix의 이 세 가지 측면을 각각 살펴보겠습니다.
Nix 프로젝트는 완전한 오픈 소스이며, 주로 GitHub의 NixOS 조직에서 개발됩니다. LGPL 2.1 라이선스를 따르며, 이 라이선스는 일반적으로 상업적 사용에 상당히 관대합니다.
저희 Determinate Systems는 수많은 재능 있는 개인들과 함께 오픈 소스 프로젝트인 Nix에 적극적으로 기여해 왔으며, Nix를 더 좋게 만들겠다는
Nix CLI
현재 두 가지 Nix CLI가 사용되고 있습니다:
- 통합 Nix CLI는 현재 실험 단계이지만,
Determinate Systems 는 Nix를 사용할 때 이 CLI를 권장합니다. 모든 Nix 기능을 하나의nix실행 파일에 담았으며 플레이크를 지원합니다 - 기존 Nix CLI는 현재 표준이지만,
Determinate Systems 는 Nix를 사용할 때 이 CLI를 권장하지 않습니다.
통합 CLI
통합 CLI는 nix라는 실행 파일 하나만 사용하는, 아직 실험 단계인 Nix 사용 방식입니다. 기존 nix-build 도구 대신 패키지를 빌드하는 nix build, 기존 nix-shell 도구 대신 Nix 개발 환경을 활성화하는 nix develop, 기존 nix-store 도구 대신 Nix 스토어를 관리하는 nix store 등의 명령어를 비롯해 모든 Nix 기능이 이 도구 하나에 담겨 있습니다. 통합 CLI는 아직 공식 CLI가 아니므로, Nix 설정의 experimental-features 목록에 nix-command를 추가하여 명시적으로 활성화해야 합니다.
Determinate Nix Installer가 통합 CLI를 설치하고 Nix 설정에서 활성화까지 해 주므로, 여기서는 통합 CLI 설정 방법을 다루지 않습니다.
기존 CLI
Nix의 기존 CLI는 여전히 공식 CLI이지만, 앞서 언급했듯이 다음 두 가지 이유로 Nix를 처음 사용하는 분에게는 권장하지 않습니다:
- 플레이크가 등장하기 전에 만들어졌기 때문에 Nix 플레이크와 호환되지 않습니다.
- 패키지를 빌드하는
nix-build, Nix 개발 환경을 위한nix-shell, Nix 스토어를 관리하는nix-store등 여러 가지 CLI 도구를 익혀야 하므로, 통합 CLI에 비해 인지적 부담이 상당히 큽니다.
Determinate Nix Installer는 기본적으로 통합 CLI를 활성화하지만, 기존 CLI의 도구도 계속 사용할 수 있도록 남겨 둡니다.