Загрузка зависимостей из nixpkgs-unstable с помощью nix-shell

Я использую NixOS 16.09 и хочу использовать пакеты, которые в настоящее время находятся только в nixpkgs-unstable / nixos-unstable.

Используя nix-channel --add, я смог добавить nixpkgs-unstable в мои (пользовательские) каналы и использовать его для установки последней версии некоторых пакетов с nix-env.

Однако я понимаю, что, хотя nix-env зависит от определяемых пользователем каналов, nix-shell вместо этого зависит от переменной среды NIX_PATH, в моем случае:

$ echo $NIX_PATH 
nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels

Итак, это ясно показывает проблему: nix-shell собирается использовать общесистемный канал NixOS 16.09 вместо определяемого пользователем канала nixpkgs-unstable.

Прямо сейчас я использую этот обходной путь:

nix-shell -I nixpkgs=~/.nix-defexpr/channels/nixpkgs

Мне это не очень красиво. Каким будет рекомендуемый способ сделать это?

Чтобы добавить что-то вроде:

export NIX_PATH="nixpkgs=~/.nix-defexpr/channels/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels"

к моему .profile? Выглядит это тоже не очень красиво.


person Zimm i48    schedule 10.11.2016    source источник


Ответы (2)


Добро пожаловать в давнюю путаницу с nix-env и NIX_PATH. Явно указано, что nix-env не использует NIX_PATH, что делает его (я думаю) единственным инструментом Nix, который не уважает NIX_PATH.

Итак, настоящая проблема здесь с nix-env, а не с nix-shell. Я опубликую кучу проблем по этому поводу в системе отслеживания ошибок Nix:

Прямо сейчас я использую этот обходной путь:

Итак, теперь вы видите, что это не обходной путь. Рекомендуется всегда указывать, какой именно Nixpkgs вы хотите использовать: версию корневого канала, версию вашего канала, версию удаленного восходящего канала, локальную проверку git или закрепленную версию git.

person danbst    schedule 11.11.2016

Чтобы завершить другой ответ, вот хорошая ссылка, которую я только что нашел, объясняет NIX_PATH и тот факт, что nix-env не использует его: http://lethalman.blogspot.fr/2014/09/nix-pill-15-nix-search-paths.html

person Zimm i48    schedule 03.01.2017