используйте cabal2nix для создания локальной среды nix для пакетов, которых нет в nixpkgs
В настоящее время у меня есть веб-приложение Yesod, которое я разрабатываю для NixOS. Я используюdefault.nix
файл, как описано в O'Charles 'Сообщение блога:
{ haskellPackages ? (import <nixpkgs> {}).haskellPackages }:
haskellPackages.cabal.mkDerivation (self: {
pname = "myblog";
version = "0.0.0";
src = ./.;
isLibrary = true;
isExecutable = true;
buildDepends = with haskellPackages; [
aeson bson conduit dataDefault fastLogger hjsmin
httpConduit monadControl monadLogger mongoDB persistent
#persistentMongoDB
persistentTemplate poolConduit shakespeare text
waiExtra waiLogger warp yaml yesod yesodAuth
yesodCore yesodDefault yesodForm yesodStatic
];
testDepends = with haskellPackages; [
hspec monadLogger persistent
#persistentMongoDB
resourcet transformers yesod yesodCore yesodTest
];
buildTools = with haskellPackages; [
cabalInstall ghcMod yesodBin
];
jailbreak = true;
})
Это работает очень хорошо. Я могу использоватьyesod
бинарный иcabal
вроде нормально. Однако я сталкиваюсь с одной проблемой. При бегеcabal haddock
Я получаю следующую ошибку:
Running Haddock for mycoolblog-0.0.0...
Preprocessing library mycoolblog-0.0.0...
Warning: The documentation for the following packages are not installed. No
links will be generated to these packages: persistent-mongoDB-2.1.1
<command line>: cannot satisfy -package-id aeson-0.8.0.2-9e93bdd6f8e68379314dd5f31414f87f
(use -v for more information)
Погуглив об этом, вы увидите следующую ссылку:github: cabal haddock "не может удовлетворить -package-id" # 2468, Похоже, он говорит, что следует использовать ghcWithPackages.
Погуглить оghcWithPackages
воспитывает О'Чарльза (личное?)вики на Nix, Это пример использованияghcWithPackages
разработать пакет, который уже находится в nixpkgs, но я не могу заставить его работать с пакетом, которого еще нет в nixpkgs (мой cms / блог).
Настройка, как описано в вики О'Чарлеса, и запускnix-shell -v
Я получаю следующую ошибку:
evaluating file `/nix/store/an4sg7cxi1ii3vids8417kajl3ss13vd-nix-1.7/share/nix/corepkgs/derivation.nix'
error: cannot auto-call a function that has an argument without a default value (`cabal')
Почему я получаю вышеуказанную ошибку? Как я могу написатьdefault.nix
а такжеshell.nix
для проекта на Haskell, которого еще нет в nixpkgs? В идеале это будет использоватьghcWithPackages
чтобыcabal haddock
работает.