configuration.nix에 설치할 Nix 패키지의 이름을 찾는 방법은 무엇입니까?


21

nix-env--query작업을 사용하여 설치할 패키지를 검색한다고 가정 해보십시오 .

$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0

이 패키지 이름을 /etc/nixos/configuration.nixNixOS의 기본 구성 파일에 작성합니다 .

environment.systemPackages = with pkgs; [
  aspell-dict-en
];

그러나 sudo nixos-rebuild switchNixOS 명령을 실행 하여 구성업데이트하고 선언적으로 지정된 모든 시스템 전체 패키지를 설치 하면 오류와 함께 중단됩니다.

error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5

많은 패키지의 경우, 전부는 아니지만 nix-env반환하는 이름과 environment.systemPackages구성 옵션 에서 지정 해야하는 이름 이 다르지만 논리를 이해하지 못합니다. 찾은 패키지는 어떻게 설치 nix-env합니까?

답변:


20

NixOS 커뮤니티에는 3 가지 매뉴얼이 있습니다. 붙어있는 경우 항상 먼저 참조하십시오.

Nix의 모든 패키지는 Nix 표현식으로 지정됩니다. Nix 표현식은 Nix 언어로 작성된 일부 텍스트이며 일반적으로 확장자가 .nix. 인 파일에 있습니다 .

모든 표현식에는을 사용할 때 사람이 읽을 수있는 이름 인 소위 "기호 이름"이 있습니다 nix-env. 샘플 Nix 표현을 참조하십시오 . Nix 자체는이 심볼 이름을 내부 어디에서나 사용하지 않으므로 패키지 이름이 중요하더라도 aspell-dict-en인간의 편의를위한 것입니다.

실제로 중요한 것은 소위 "속성 경로"입니다. 따라서 혼동은 기호 이름과 속성 경로 사이에 있습니다. 모든 패키지에는 선언적 패키지 관리를environment.systemPackages 사용하여 시스템 전체를 설치하기 위해 구성 옵션 에서 사용할 수있는 속성 경로가 있습니다 .

패키지의 속성 경로를 찾으 -P려면 쿼리에 다른 플래그 를 추가 하십시오.

$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en  aspell-dict-en-7.1-0

다음을 사용하여 편안해야 nix-env하므로 호출 연습, 매일 nix-env함께 --query하고 --install옵션을 선택합니다. 그러나 Nix 패키지 검색 에서 패키지를 찾아 온라인으로 속성 경로를 찾을 수도 있습니다 . 를 입력 aspell하고 클릭 aspell-dict-en하면 설치 명령의 일부로 속성 경로를 포함하여 다양한 패키지의 속성이 표시됩니다.

$ nix-env -iA nixos.pkgs.aspellDicts.en

이제이 속성 경로를 /etc/nixos/configuration.nix다음에 넣을 수 있습니다 .

environment.systemPackages = with pkgs; [
  aspellDicts.en
];

그런 다음을 실행하여 시스템을 업데이트하십시오 sudo nixos-rebuild switch.


4
불행하게도, 대신 어떤 인쇄물에서 볼 수 있듯이이 -P옵션은에서는 작동하지 않습니다 . 해결 방법은을 사용하는 것이지만의 출력을 쉽게 덤프 할 수 없음을 의미 합니다 . --installednix-env -q --installed -P | grep terminusterminus-fontterminus_fontnix-env -qaP | grep terminus-fontnix-env -q --installedconfiguration.nix
Suzanne Dupéron

4

데이터 과학에 NixOS를 사용하는 경우 :

파이썬 모듈 :

nix-env -qaP .\*pylint.\*

또는

py_pkgs="nix_packages_py35.txt"
nix-env -qaP | grep -i python36 > ${py_pkgs}
grep pandas ${py_pkgs}

또는 특히 R 패키지 / 라이브러리 를 검색하는 경우

nix-env -f "<nixpkgs>" -qaP -A rPackages .\*tidyverse.\*

또는 다음을 사용하여 ig npm 패키지를 얻습니다.

nix-env -qaPA 'nixos.nodePackages'

pkgs 검색을위한 웹 사이트도 있습니다


1
nix-env -v -qaP '*' | grep "nvim"

결과를 nix-env -v -qaP '*'파일에 저장 합니다 (보통 반환하는 데 시간이 걸리므로).


nix-env는 아래에있는 것들 haskellPackages과 다른 것들을 무시하는 것 같습니다 .


nix-env 검색은 5 초 이상 걸리고 다시 돌아올 때 매우 실망 스럽습니다 error: regex error...


0

Mirzhans 옵션에 추가 : /nix/store처럼 확인할 수 grep -irw "programm-name" /nix/store있습니다. 그러나 이것은 약간 혼란 스러울 수 있습니다. 또한 홈 디렉토리 .local/share에서 설치된 programms / apps에 대한 디렉토리 를 확인할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.