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