如何从GitHub将Haskell软件包添加到我的shell.nix文件?

问题描述 投票:0回答:1

所以我有一个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)";
}

奇怪的是,它似乎只是返回一个外壳程序,但是缺少该程序包。我究竟做错了什么?

haskell nix
1个回答
0
投票

您需要将包裹编织到haskellPackages组中:

© www.soinside.com 2019 - 2024. All rights reserved.