Как построить зависимость haskell из исходного файла .nix GitHub, используя nix? - PullRequest
0 голосов
/ 21 февраля 2019

Хорошо, у меня есть файл .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.) Проблема в том, что clay не работает в nixpkgs,Но я предполагаю, что clay работает в своей основной ветке на GitHub.Так как же заменить эту зависимость haskell clay на что-то, что загружает и вызывает пакет GitHub?В пакете GitHub есть куча файлов .nix, так что, думаю, это будет относительно просто, но я не знаю, с чего начать.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете расширить набор пакетов haskell, аналогично этому примеру .

Файл nix для clay может быть создан с помощью 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;
}
...