インストールされている他のNixストアからパッケージをインポートする方法は?

インストールされている他のNixストアからパッケージをインポートする方法は?

私はnixストレージを含むUSBディスクを持っています(より正確にはnix-store.squashfsNixOS インストール ISO のファイル)/mnt/foobar。これにより、次ls /mnt/foobarのようなおなじみのサブディレクトリが表示されます。

kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1
...etc...etc...

今(どのように)nixストアから私の通常のストアにものをインポートできますか?/nix/ストア? (理想的には依存関係を使用して...)それとも不可能ですか? ... :/近いと感じますが、次に何をすべきかわかりませんNIX_STORE=/mnt/foobar nix-store -qR /mnt/foobar/*-somepackage-*

答え1

うーん。私は以下に基づいて何かを試しました。ウィキペディア(「ラージファイル」セクション)、つまり:

sudo unshare -m bash
mount -o remount,rw /nix/store
cd /mnt/foobar
tar c kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1 | tar x -C /nix/store
printf "kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1\n\n0\n" | nix-store --register-validity --reregister
exit

これで、nix-env -qaこのパッケージは-P-(インストール済み?またはインストールされていません?)と表示されているようです。しかし、すべてが正常かどうかはまだ100%確かではありません。

答え2

新しいCLIを搭載したNix v3ではnix copy

文法はこうです

nix copy --from /mnt/foobar /nix/store/kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1

パッケージを直接ビルドした場合--no-check-sigs

マニュアルページ

関連情報