Как скопировать профиль nix-env с помощью nix-copy-closure?

Я использую nix-env с несколькими каналами и локальными переопределениями для установки пакетов на macOS и Nixos Linux на нескольких компьютерах. Иногда я исключаю пакеты из обновлений из-за проблем. Все это приводит к некоторым ручным усилиям по поддержанию моей пользовательской среды. Я хотел бы использовать nix-copy-closure, чтобы скопировать как можно больше данных с одного компьютера на другой. Я знаю, что можно скопировать профиль целиком с помощью nix-copy-closure, но как мне тогда его установить? Если это не сработает, можно ли скопировать все установленные пакеты, а затем установить их один за другим.

Мне известен следующий связанный вопрос: https://stackoverflow.com/questions/28159181/how-to-copy-a-nix-profile Но это решение мне не подходит, поэтому я создал этот вопрос.

1 ответ

Создайте "metapackge", файл, подобный 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 на удаленный хост, так как вы можете установить путь к хранилищу напрямую.

Другие вопросы по тегам