複数のチャネルとローカルオーバーライドでnix-envを使用して、macOSにパッケージをインストールし、複数のコンピューターにNixosLinuxをインストールしています。問題のために、パッケージを更新から除外することがあります。これはすべて、ユーザー環境を維持するためのかなりの手作業につながります。 nix-copy-closureを使用して、あるコンピューターから別のコンピューターに可能な限りコピーしたいと思います。 nix-copy-closureを使用してプロファイル全体をコピーすることは可能ですが、どのようにインストールすればよいですか?それがうまくいかない場合は、インストールされているすべてのパッケージをコピーして、1つずつインストールすることは可能ですか?.
私は次の関連する質問を知っています: https://stackoverflow.com/questions/28159181/how-to-copy-a-nix-profile しかし、その解決策は私にとって満足のいくものではないので、私はこの質問を作成しました。
mypkgs.nix
のようなファイルである「メタパッケージ」を作成します。
{ pkgs ? import <nixpkgs> {}, ... } :
pkgs.buildEnv {
name = "mypkgs";
paths = with pkgs; [ bat cowsay ];
}
nix-build mypkgs.nix
はパッケージをビルドし、そのパスを出力します。これはnix-copy-closure
およびnix-env -i
で使用できます。
ストアパスを直接インストールできるため、mypkgs.nix
をリモートホストにコピーする必要はありません。