nixos-оболочка в виртуальной машине nixos, похоже, не распознает существующие пути к хранилищу?

#nix #nixos

Вопрос:

Я использую https://github.com/Mic92/nixos-shell для создания/запуска виртуальной машины.

В этой виртуальной машине я пытаюсь запустить nixos-shell , который изначально не удался с ошибкой, однако после добавления:

 {...}: {
  nix.nixPath = [
    "nixpkgs=${pkgs.path}"
  ];
}
 

Теперь он работает, однако, похоже, загружает зависимости, которые уже должны существовать на хосте, при попытке вызвать что-то через nix-shell .

 nix-shell -p vim                                                                                       /bambie
these paths will be fetched (7.00 MiB download, 33.13 MiB unpacked):
  /nix/store/1cbk7i6dg26cygss2b6w8xq4dnj50z31-vim-8.2.1522
copying path '/nix/store/1cbk7i6dg26cygss2b6w8xq4dnj50z31-vim-8.2.1522' from 'https://cache.nixos.org'...
^Cerror: interrupted by the user
 

Почему это происходит? Когда путь ( /nix/store/1cbk7i6dg26cygss2b6w8xq4dnj50z31-vim-8.2.1522 ) присутствует на виртуальной машине (я говорю это, потому что он присутствует, когда я это делаю ls /nix/store/1cbk7i6dg26cygss2b6w8xq4dnj50z31-vim-8.2.1522 )?

Ответ №1:

На самом деле это не решение, но я считаю, что это объясняет, почему происходит такое поведение:

Проблема здесь в том, что при использовании Nix внутри виртуальной машины пути к хранилищу с хоста не регистрируются в базе данных SQLite Nix. С другой стороны, однако все пути к хранилищу с хост-машины должны быть доступны в виртуальной машине (за исключением, конечно, случаев, когда виртуальная машина работает в процессе сборки Nix).

https://discourse.nixos.org/t/how-to-build-a-nixos-vm-with-nix-in-which-nixos-rebuild-is-a-no-op/7937/2