URL 내용(예: 원래 GitHub 링크)으로 `nix-shell`을 어떻게 호출합니까?

URL 내용(예: 원래 GitHub 링크)으로 `nix-shell`을 어떻게 호출합니까?

파일에 저장하고 임시 파일을 사용하면 문제가 없습니다.

$ url="https://raw.githubusercontent.com/toraritte/shell.nixes/main/deno-latest-shell.nix"

$ curl $url > default.nix

$ nix-shell
# or
$ nix-shell default.nix

하지만 임시 파일을 사용하지 않고 이를 수행하는 방법은 무엇입니까? 이것이 내가 지금까지 시도한 것입니다:

관로

$ curl $url | nix-shell -

그러면 파일이 다운로드되고... 아무 일도 일어나지 않습니다.

$ curl $url | nix-shell

default.nix(물론) 오류가 발생합니다 .

프로세스 대체

사용<()운영자(파일):

$ nix-shell <(curl $url)

# ... output...
error: getting status of '/dev/fd/pipe:[11284302]': No such file or directory

하지만 변경하면 nix-shell출력 을 일반 파일에 cat저장하고 해당 내용을 인쇄하는 것처럼 작동합니다 .curl

(아마 이 방법에서도 같은 문제가 발생했을 것입니다.프로세스 대체<()가 ssh -F에서 작동하지 않는 이유? 해결책은 =(...)기본적으로 뒤에서 임시 파일을 사용하는 zsh와 특수 연산자를 사용하는 것입니다. )


있다는 것을 알고 있지만 nix-shell -E특정 예제 Nix 표현식에 주석이 포함되어 있지 않더라도 문제가 될 수 있습니다...

답변1

이것은 Nix 버그처럼 보입니다. 여기에도 비슷한 버그가 있습니다.nix eval.

문제가 해결될 때 까지는 nix-shell -E "$(curl $url)".nix-shell -E "import (builtins.fetchurl $url)"

실행하기 전에 표현식을 신뢰할 수 있는지 확인하십시오. 표현식에는 shellHook임의의 bash 코드가 포함될 수 있으며 nix-shell이 ​​이를 실행합니다.

관련 정보