从一个非常基本的 cabal 文件
cabal2nix ./. > default.nix
然后是一个shell.nix
let
pkgs = import <nixpkgs> {};
haskellPackages = pkgs.haskellPackages_ghc784.override {
extension = self: super: {
thispackage = self.callPackage ./default.nix {};
};
};
in pkgs.myEnvFun {
name = haskellPackages.thispackage.name;
buildInputs = [
(haskellPackages.ghcWithPackages (hs: ([
hs.cabalInstall
] ++ hs.thispackage.propagatedNativeBuildInputs)))
];
}
在 nix-shell 中运行 cabal 配置时,它会抱怨缺少诸如文本之类的包。
如果我将文本包显式放入 shell.nix 中,例如
let
pkgs = import <nixpkgs> {};
haskellPackages = pkgs.haskellPackages_ghc784.override {
extension = self: super: {
thispackage = self.callPackage ./default.nix {};
};
};
in pkgs.myEnvFun {
name = haskellPackages.thispackage.name;
buildInputs = [
(haskellPackages.ghcWithPackages (hs: ([
hs.cabalInstall
hs.text
] ++ hs.thispackage.propagatedNativeBuildInputs)))
];
}
cabal 配置很好,但我希望 hs.thispackage.propagatedNativeBuildInputs 提供这些包。
可以在以下位置看到非常基本的 haskell 项目
https://github.com/fatlazycat/haskell-nix-helloworld
假设您可以以这种方式工作,我错了吗?
谢谢