Есть ли способ восстановить набор пакетов, созданный nixpkgs с оверлеями, таким образом, чтобы он был совместим с nix copy
?
Возьмите, например, следующие операторы в nix repl
overlays = [(self: super: {aardvark = "does aardvark";})]
pkgs = import <nixpkgs> { inherit overlays; }
pkgs2 = import pkgs.path {}
pkgs3 = import pkgs.path { inherit (pkgs) overlays; }
pkgs.aardvark
существует и был помещен туда с помощью наложения, но если я попытаюсь повторно импортировать полученный путь pkgs
, я импортирую только магазинную версию <nixpkgs>
.
pkgs3.aardvark
также существует, но это не то решение, которое мне нужно.
Я намереваюсь использовать nix copy
из pkgs
с наложениями. Я могу скопировать определение pkgs.path
, но не оверлеи, поскольку это список лямбда-выражений, а не путей. Я надеюсь на действительно простое решение, например, вместо pkgs.path
есть атрибут типа pkgs.drv
или pkgs.out
, который можно импортировать, например, с помощью import pkgs.out
и доставляет переопределенный набор пакетов.