gpt4 book ai didi

haskell - 如何通过 Nix 覆盖 nixpkgs 中的 Haskell 包?

转载 作者:行者123 更新时间:2023-12-03 21:19:19 25 4
gpt4 key购买 nike

基本上我正在使用这个:

default.nix

{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc864" }:
nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./gitchapter.nix { }

gitchapter.nix
{ mkDerivation, base, directory, extra, filepath, foldl, hpack
, HUnit, mtl, optparse-applicative, pandoc-include-code, parsec
, pretty-simple, process, QuickCheck, rainbow, regex-pcre
, regex-posix, safe, stdenv, string-conversions, system-filepath
, template-haskell, text, transformers, turtle, unix
, unordered-containers
}:
mkDerivation {
pname = "gitchapter";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
libraryToolDepends = [ hpack ];
executableHaskellDepends = [
base directory extra filepath foldl HUnit mtl optparse-applicative
pandoc-include-code parsec pretty-simple process QuickCheck rainbow
regex-pcre regex-posix safe string-conversions system-filepath
template-haskell text transformers turtle unix unordered-containers
];
preConfigure = "hpack";
license = stdenv.lib.licenses.bsd3;
}

但是, pandoc-include-code 存在问题。无法构建,这似乎已在 git 存储库中修复。如何覆盖包以指向 git 存储库或本地目录?

我会按照 https://nixos.org/nixos/nix-pills/nixpkgs-overriding-packages.html 上的说明进行操作吗?或者由于使用 nixpkgs.pkgs.haskell.packages.${compiler}.callPackage 而这会有所不同吗?功能?

编辑:
感谢@sara 的回答,我现在有了:
{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc864" } :
let
gitchapter = nixpkgs.pkgs.haskell.packages.${compiler}.callCabal2nix "gitchaper" (./.) {};
zzzzz = nixpkgs.pkgs.haskell.lib.overrideCabal gitchapter;
in
nixpkgs.pkgs.haskell.packages.${compiler}.callPackage (zzzzz) { }

所以我想现在是确定现在如何覆盖该依赖项的问题。

最佳答案

考虑使用 callCabal2nix来自 haskell.packages.${compiler} !

它将遍历您的 .cabal 文件并生成一个 nix 表达式以从中派生(从而使 gitchapter.nix 变得不必要),然后您可以使用 overrideCabal 覆盖它。函数在 haskell.lib以类似于正常派生覆盖的方式。然后,您可以从 git 获取更新的 pandoc 派生,并将其作为 buildInput 添加到您的覆盖表达式中。

关于haskell - 如何通过 Nix 覆盖 nixpkgs 中的 Haskell 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56414329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com