Итак, у меня есть 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)";
}
Странно то, что кажется, что он только возвращает оболочку, но пакет отсутствует. Что я делаю неправильно?