web-dev-qa-db-ja.com

nix-copy-closureを使用してnix-envプロファイルをコピーする方法は?

複数のチャネルとローカルオーバーライドでnix-envを使用して、macOSにパッケージをインストールし、複数のコンピューターにNixosLinuxをインストールしています。問題のために、パッケージを更新から除外することがあります。これはすべて、ユーザー環境を維持するためのかなりの手作業につながります。 nix-copy-closureを使用して、あるコンピューターから別のコンピューターに可能な限りコピーしたいと思います。 nix-copy-closureを使用してプロファイル全体をコピーすることは可能ですが、どのようにインストールすればよいですか?それがうまくいかない場合は、インストールされているすべてのパッケージをコピーして、1つずつインストールすることは可能ですか?.

私は次の関連する質問を知っています: https://stackoverflow.com/questions/28159181/how-to-copy-a-nix-profile しかし、その解決策は私にとって満足のいくものではないので、私はこの質問を作成しました。

1
jmg

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をリモートホストにコピーする必要はありません。

1
brainrape