guix shell
特定の環境で実行されるスクリプトを作成したいと思います。同等のバージョンがあればいいのですが。nix-shell
シェルボーン。たとえば、次のような内容を書くとよいでしょう。
#!guix shell
#!--manifest=manifest.scm bash
# ... commands ...
回避策としては、評価された検索パスを「インポート」するだけで十分ですguix shell
。たとえば、次のようになります。
#!/usr/bin/env bash
eval "$(guix shell --manifest=manifest.scm --search-paths)"
# ... commands ...
答え1
私はすべてのパッケージ通訳を許可するこのshebangを使用します。
#!/usr/bin/env -S guix shell [--pure] [-m manifest.scm] [packages...] -- bash
答え2
検索パスを評価するのがguix shell
有効なオプションのようです。おそらくそれほど可愛くないでしょう#!nix-shell
。しかし、たぶんそれが特徴かもしれません。
つまり、同じディレクトリに Manifest.scm ファイルが存在すると仮定し、ファイルの上部に次の行を追加します。
#!/usr/bin/env bash
eval "$(guix shell --manifest=manifest.scm --search-paths)"
# ...
また--pure
、このオプションを追加してスクリプトを自己完結させることもできます。
#!/usr/bin/env bash
eval "$(guix shell --pure --manifest.scm --search-paths)"
# ...
スクリプトが存在する場合シェル認証ディレクトリ、次が動作します:
#!/usr/bin/env bash
eval "$(guix shell --search-paths)"
# ...
これはリストなしで動作します。
#!/usr/bin/env bash
eval "$(guix shell --pure python-wrapper python-numpy --search-paths)"
exec python wrapped-python-script.py "$@"
nix-shell
ただし、このアプローチはshebangを使用してさまざまなインタプリタ用の環境を作成することをサポートしていませんが、このバリエーションはサポートしています。たとえば、nix-shell
スクリプト自体はPythonファイルである可能性がありますが、ShebangのマジックバイトはPythonファイル用のnix "プロファイル"を生成します。この目的のために、Guixメソッドは上記の内容を使用して、exec
良いフロー管理と楽しさのためにスクリプトの周りにラッパーを作成します。