5. Nix 패키지 검색하기
→nix search 명령으로 Nixpkgs에서 패키지 찾기
→search.nixos.org 웹 인터페이스 살펴보기
→nix flake show 명령으로 플레이크가 출력하는 패키지 살펴보기
Nix의 큰 장점 중 하나는 Nix 개발 환경, NixOS 설치 등에서 사용할 수 있는 패키지가 Nix 생태계에 엄청나게 많다는 점입니다. Nixpkgs는 단연 가장 큰 Nix 패키지 모음이지만(10만 개가 넘는 패키지가 있으며 지금도 늘어나고 있습니다 😎), 어떤 Nix 플레이크든 패키지 출력을 제공할 수 있습니다.
하지만 이렇게 방대한 패키지를 탐색하는 일은 까다로울 수 있으므로, 이 가이드에서는 nix search 명령과 search.nixos.org의 웹 애플리케이션을 사용하여 Nixpkgs에서 패키지를 검색하는 방법을 알아보겠습니다. 그런 다음 다른 플레이크의 패키지를 살펴보는 방법을 알아보겠습니다.
nix search 명령
Nix CLI에는 검색어를 바탕으로 플레이크의 패키지를 검색할 수 있는 search 명령이 있습니다. 원하는 패키지를 찾을 가능성이 가장 높은 Nixpkgs를 검색하는 것부터 시작합시다. 이 명령은 Nixpkgs에 cargo가 있는지 알려 줍니다:
nix search "https://flakehub.com/f/NixOS/nixpkgs/*" cargo이 명령에서 nixpkgs 플레이크 참조는 github:NixOS/nixpkgs의 약칭입니다.
nix search를 처음 실행하면 Nix CLI는 Nixpkgs(또는 검색 중인 플레이크)의 Nix 코드 전체를 다운로드한 다음 캐시해야 합니다. 이후 Nixpkgs에 대한 nix search 실행은 훨씬 빨라집니다. 게다가 Nixpkgs는 현존하는 가장 큰 플레이크이므로, 다른 플레이크에서 nix search를 실행하면 일반적으로 훨씬 빠릅니다.
이 명령은 legacyPackages.{system}.{package} 형식의 결과를 많이 보여 주며, Apple Silicon(aarch64-darwin) 시스템에서는 그중 첫 번째 결과가 다음과 같이 표시됩니다:
* legacyPackages.aarch64-darwin.cargo (1.65.0) Downloads your Rust project's dependencies and builds your project시스템 속성은 다른 플랫폼에서는 달라집니다(x86_64-linux 또는 다른 값이 표시될 수 있습니다). 첫 번째 결과 다음에는 cargo-about와 cargo-audit 같은 패키지를 포함하여 많은 결과가 표시됩니다.
--json 플래그를 사용하여 검색 결과를 JSON으로 출력할 수도 있습니다:
nix search --json nixpkgs cargo이는 jq 같은 도구로 출력을 파싱하려는 경우에 유용합니다.
search.nixos.org
search.nixos.org의 웹 인터페이스는 nix search 명령에 비해 몇 가지 장점이 있습니다:
- 25.05나 unstable 같은 Nixpkgs 릴리스 채널을 선택할 수 있습니다
- Nixpkgs 외에도 다양한 공개 플레이크를 검색할 수 있습니다(해당 플레이크 목록은 Nix 매뉴얼에 있습니다)
nix flake show 명령으로 플레이크 살펴보기
예시로 Wayland 윈도 시스템 프로토콜을 위한 인기 있는 플레이크를 살펴봅시다.
nix flake show "github:nix-community/nixpkgs-wayland"출력을 JSON으로 표시할 수도 있습니다:
nix flake show --json "github:nix-community/nixpkgs-wayland"nix flake show를 처음 실행하면 Nix CLI는 nixpkgs-wayland(또는 nix flake show를 실행하는 대상 플레이크)의 전체 내용을 다운로드한 뒤 캐시해야 합니다. 이후 같은 플레이크 참조에 대해 nix flake show를 실행하면 훨씬 빨라집니다.
nix search와 nix flake show는 각각 언제 사용합니까nix flake show와 nix search 중 어느 것을 사용해야 합니까? 좋은 경험칙은 Nixpkgs에는 항상 nix search를 사용하고, 다른 플레이크에는 우선 nix flake show를 사용하는 것입니다. nix flake show의 패키지 출력이 살펴보기 까다로울 만큼 크다면, 해당 플레이크에는 대신 nix search를 사용하십시오.
시스템 특정성
nix search, search.nixos.org, nix flake show의 검색 출력을 보면, 조회 결과에 나열된 모든 패키지가 현재 시스템(AMD/Intel Linux 시스템이라면 x86_64-linux, Apple Silicon 시스템이라면 aarch64-darwin 등)용이라는 점을 알 수 있습니다. 이는 Nix가 근본적으로 시스템별 방식으로 동작하기 때문입니다. Linux 머신의 cargo 패키지는 Linux가 아닌 시스템의 cargo와 서로 다른 패키지로 간주됩니다.