используйте 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 работает.

Ответы на вопрос(1)

Ваш ответ на вопрос