如何使用nix从GitHub源.nix文件构建haskell依赖关系?

时间:2019-02-21 15:38:15

标签: haskell nix

好的,所以我的项目有一个.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的master分支上工作。那么,如何用下载并调用GitHub程序包的东西替换此haskell依赖项clay? GitHub程序包中有一堆.nix文件,所以我想它相对来说很简单,但是我真的不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

您可以扩展haskell软件包集,类似于this example

clay的nix文件可以使用cabal2nix

创建
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;
}