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がこれを実行します。

おすすめ記事