#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).