Home Manager를 사용하여 tarball을 설치하는 방법은 무엇입니까?

Home Manager를 사용하여 tarball을 설치하는 방법은 무엇입니까?

저는 nix를 처음 접했기 때문에 솔루션에 대한 자세한 설명을 주시면 감사하겠습니다.

추가하려고 해요rnix-lsp내 집 구성으로. github 페이지의 지침에는 tarball의 URL에서 nix-env 명령을 실행하라는 내용만 나와 있는데 어떻게 해야 할지 모르겠습니다.

는 알지만 fetchTarball어떻게 해야 할지 모르겠습니다 home.packages. 다음과 같이 시도해 보았습니다.

home.packages = [
    (import (fetchTarball “https://github.com/nix-community/rnix-lsp/archive/master.tar.gz”) {}; ).defaultNix
];

하지만 컬렉션을 호출하려고 하면 오류가 발생합니다. 내가 원하는 것을 할 수 있는 방법이 있나요?

구체적인 오류는 다음과 같습니다.

error: attempt to call something which is not a function but a set, at /home/izzylan/.config/nixpkgs/home.nix:33:9

답변1

소스 코드를 조사하여 답을 직접 찾았습니다.

import (fetchTarball “https://github.com/nix-community/rnix-lsp/archive/master.tar.gz”)

이것이 작동하는 이유

우리는 볼 수 있습니다가정 환경.nix홈 관리자는 home.packages예상되는 유형이 nixpkgs 모듈에 정의되어 있으므로 nix가 "패키지"가 무엇인지 결정하는 방법을 types.package확인할 수 있습니다 . types.nix그러면 우리는 찾을 수 있습니다패키지 유형의 정의그리고 패키지가 파생되었는지 또는 저장 경로가 포함된 문자열을 포함하는지 확인합니다.

rnix-lsp는 이미 nix 프로젝트이며 default.nix에서 포크로 자체를 내보냅니다. 1그러므로 우리가 해야 할 일은 이를 tarball로 다운로드하여 구성으로 가져오는 것뿐입니다. home-manager그런 다음 다른 패키지와 마찬가지로 포크를 가져와서 빌드하고 설치하게 됩니다.


1기술적으로 는 다음과 같이 정의됩니다.플레이크flake.nixflake-compat를 사용하여 포크 default.nix로 내보냅니다.

관련 정보