이 사이트는 의 를 yeokja로 기계 번역한 비공식 한국어판입니다. 정확한 내용은 원문을 확인하세요.

5. Nix 패키지 검색하기

빠른 시작/Nix 패키지 검색하기
가이드 5 / 8
이 가이드에서

→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가 있는지 알려 줍니다:

Search Nixpkgs using cargo as the search term
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) 시스템에서는 그중 첫 번째 결과가 다음과 같이 표시됩니다:

Example search result
* legacyPackages.aarch64-darwin.cargo (1.65.0)
Downloads your Rust project's dependencies and builds your project

시스템 속성은 다른 플랫폼에서는 달라집니다(x86_64-linux 또는 다른 값이 표시될 수 있습니다). 첫 번째 결과 다음에는 cargo-about와 cargo-audit 같은 패키지를 포함하여 많은 결과가 표시됩니다.

legacyPackages는 레거시 소프트웨어가 아닙니다

검색 출력에 보이는 legacyPackages 속성은 다소 오해의 소지가 있습니다. 이 접두사가 붙은 패키지는 “레거시” 패키지가 아닙니다. Nixpkgs는 이 코드 주석에 설명된 이유로 일반적인 packages 출력 대신 특별한 legacyPackages 속성을 사용하여 패키지를 출력합니다.

--json 플래그를 사용하여 검색 결과를 JSON으로 출력할 수도 있습니다:

Output search results as JSON
nix search --json nixpkgs cargo

이는 jq 같은 도구로 출력을 파싱하려는 경우에 유용합니다.

search.nixos.org

search.nixos.org의 웹 인터페이스는 nix search 명령에 비해 몇 가지 장점이 있습니다:

nix flake show 명령으로 플레이크 살펴보기

예시로 Wayland 윈도 시스템 프로토콜을 위한 인기 있는 플레이크를 살펴봅시다.

Display the flake outputs for the nixpkgs-wayland flake
nix flake show "github:nix-community/nixpkgs-wayland"

출력을 JSON으로 표시할 수도 있습니다:

Display the flake outputs for the nixpkgs-wayland flake as 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와 서로 다른 패키지로 간주됩니다.