Verwenden Sie cabal2nix, um eine lokale Nix-Umgebung für Pakete zu erstellen, die nicht in nixpkgs @ enthalten sin

Ich habe derzeit eine Yesod-Webanwendung, die ich auf NixOS entwickle. Ich benutze eindefault.nix Datei wie in O'Charles '@ beschriebBlogeintra:

{ 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;
})

Das funktioniert sehr gut. Ich kann das @ benutzyesod binary undcabal wie gewöhnlich. Ich habe jedoch ein Problem. Beim Laufencabal haddock, Ich erhalte den folgenden Fehler:

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)

enn Sie darüber googeln, wird der folgende Link angezeigt:github: cabal haddock 'kann -package-id nicht erfüllen' # 2468. Es scheint, als würde gesagt, dass ghcWithPackages verwendet werden sollte.

Googeln überghcWithPackages bringt O'Charles '(persönliche?)wiki auf Nix. Es hat ein Beispiel für die Verwendung vonghcWithPackages, um ein Paket zu entwickeln, das bereits in nixpkgs enthalten ist, aber ich kann es nicht für ein Paket verwenden, das noch nicht in nixpkgs enthalten ist (mein cms / blog).

Einstellen wie in O'Charles 'Wiki beschrieben und ausführennix-shell -v, Ich erhalte den folgenden Fehler:

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')

Warum erhalte ich den obigen Fehler? Wie kann ich ein @ schreibdefault.nix undshell.nix für ein Haskell-Projekt, das noch nicht in nixpkgs enthalten ist? Im Idealfall würde es @ verwendghcWithPackages damitcabal haddock funktioniert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage