Nix сильно отличается от менеджеров пакетов, таких как 'apt'. Производные (которые похожи на пакеты) предназначены для построения в изолированной среде, где деривация отвечает за предоставление своих собственных зависимостей путем ссылки на другие деривации. Из-за этого вам не нужно явно устанавливать что-либо для сборки пакета.
Обратите внимание, что хотя Nixpkgs использует библиотеку Cabal для сборки пакетов на Haskell, установка пакета через Nix сильно отличается от установки с помощью cabal-install. На самом деле он ближе к стеку, потому что Nixpkgs определяет его haskellPackages
на основе стека и избегает разрешения зависимостей в стиле каббалы. Тем не менее, он позволяет использовать решатель Cabal, чтобы проверить, соответствуют ли зависимости версиям, указанным в файлах Cabal. Эту проверку можно отключить с помощью функции doJailbreak
в Nixpkgs.
Я не думаю, что нам нужно вдаваться в детали упаковки Haskell в Nixpkgs, потому что вы должны быть в состоянии получить предварительно собранные дарки из канала nixos-18.09
. Выражение Nix из nixos-unstable
выдает именно ваше сообщение об ошибке.
Я рекомендую вам использовать канал последнего выпуска, nixos-18.09
, потому что nixos-unstable
будет регулярно выходить из строя. См. Руководство Nix по изменению конфигурации вашего канала.