好的,所以我的项目有一个.nix文件,如下所示:
{ mkDerivation, base, blaze-html, clay, hakyll, hspec, stdenv }:
mkDerivation {
pname = "open-editions";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ base blaze-html clay hakyll ];
testHaskellDepends = [ hspec ];
license = "unknown";
hydraPlatforms = stdenv.lib.platforms.none;
}
(这只是一个使用hakyll的web项目。)问题是,clay
在nixpkgs中被破坏了。但我假设clay
在GitHub上的主分支上工作。那么如何用下载和调用GitHub包的东西替换这个haskell依赖clay
呢? GitHub包中有一堆.nix文件,所以我猜它是相对简单的,但我真的不知道从哪里开始。
你可以扩展你的haskell包集,类似于this example。
可以使用clay
创建cabal2nix
的nix文件
cabal2nix git://github.com/sebastiaanvisser/clay.git > clay.nix
假设您的.nix文件名为open-editions.nix
,您的default.nix
可能看起来像:
let
pkgs = import <nixpkgs> {}; # or similar, I like to pin it with niv
hs = pkgs.haskellPackages.extend(self: super: { # (1) extend the package set
open-editions = self.callPackage ./open-editions.nix {};
clay = self.callPackage ./clay.nix {}; # (2) update clay
});
in {
inherit (hs) open-editions; # (3) make nix-build pick up my-project;
}