ターミナルセッションを開始するときに `nix-user-chroot`を自動的に実行します(Steam Deck)。

ターミナルセッションを開始するときに `nix-user-chroot`を自動的に実行します(Steam Deck)。

私はSteam DeckでArch Linuxを実行しています。 Steam Deckには読み取り専用のルートファイルシステムがあり、Flatpakを使用したり、パックマンベースのインストールを削除する代わりにファイルシステムを書き込み可能にする必要があります。Deckのソフトウェアをアップデートするたびに

私はFlatpakのファンではなく、Nixを好む。特にFlatpakには必要ありませんが、必要なパッケージがあるからです。

Nixを使用すると、chroot刑務所でrootアクセスなしで完全なパッケージマネージャを実行できます。nix ユーザー chroot便利です。

インストール後にchrooted nix環境に入るコマンドは、新しいnix-user-chroot ~/.nix bash -lシェルで正しく実行されます。

ここに画像の説明を入力してください。

しかし、最後に同じ行を貼り付けると.bashrcパニックになります。

ここに画像の説明を入力してください。

これは、コマンドを2回実行したときに発生するのとまったく同じエラーのようです。

ここに画像の説明を入力してください。

Steam Deckシェルはchroot刑務所で実行されているようです。この技術chrootしたかどうかを確認するには(nix-user-chroot ~/.nix bash -lbashrcでは実行されません):

ここに画像の説明を入力してください。

nix-user-chroot ~/.nix bash -lだから私の質問は、各端末に対して呼び出されるようにこれをどのように自動化できるかということです。

ベストアンサー1

コメントでmuruが述べたように、問題は、最初の実行が正常に機能するがnix-user-chroot ~/.nix bash -l再実行を試みる新しいシェルを作成することnix-user-chrootです。解決策はnix-user-chrootif句に入れ、nix環境がすでにロードされていることを確認することです。

if [ -z "${NIX_PROFILES}" ]; then
    ./nix-user-chroot ~/.nix bash -l
fi

後ろに.bashrcnix設定ファイルをロードします(インストールプログラムまたはファイルに1行を追加しました.profile)。

おすすめ記事