所以我有一个Haskell项目,它的shell.nix看起来像这样:
{ nixpkgs ? import <nixpkgs> {} }:
let
inherit (nixpkgs) pkgs;
ghc = pkgs.haskellPackages.ghcWithPackages (ps: with ps; [
regex-compat lucid replace-attoparsec hspec cabal-install text-regex-replace optparse-generic lens-regex-pcre clay bytestring charsetdetect AhoCorasick
]);
in
pkgs.stdenv.mkDerivation {
name = "my-haskell-env";
buildInputs = [ ghc ];
shellHook = "eval $(egrep ^export ${ghc}/bin/ghc)";
}
但是AhoCorasick坏了,我需要从这里安装它的自定义版本:
https://github.com/stackbuilders/AhoCorasick
我该怎么做?我想这是使用pkgs.fetchFromGitHub
的东西,但是我什至似乎无法在Nix手册中找到有关此文件的文档。
编辑:这是我到目前为止正在尝试的内容:
{ nixpkgs ? import <nixpkgs> {} }:
let
inherit (nixpkgs) pkgs;
myAhoCorasickSrc = pkgs.fetchFromGitHub {
owner = "stackbuilders";
repo = "AhoCorasick";
rev = "cbf76b78612c66e51eb02f24162ace49325c5d61";
sha256 = "0ci5rywh042yi4ild3i7kx09rmj5v5iswzsah47f8axj1kq5vlci";
};
myAhoCorasick = pkgs.haskellPackages.callCabal2nix myAhoCorasickSrc {};
ghc = pkgs.haskellPackages.ghcWithPackages (ps: with ps; [
regex-compat
lucid
replace-attoparsec
hspec
cabal-install
text-regex-replace
optparse-generic
lens-regex-pcre
clay
bytestring
charsetdetect
myAhoCorasick
]);
in
pkgs.stdenv.mkDerivation {
name = "my-haskell-env";
buildInputs = [ ghc ];
shellHook = "eval $(egrep ^export ${ghc}/bin/ghc)";
}
奇怪的是,它似乎只是返回一个外壳程序,但是缺少该程序包。我究竟做错了什么?
您需要将包裹编织到haskellPackages
组中: