Răz*_*nda 5 haskell cabal-install nix nix-shell
如果我在nix-shell它下面构建我的 Haskell 项目,则会出现关于缺少zlib.
如果我使用 nix-shell 构建项目,nix-shell -p zlib则该项目zlib会成功查看并构建。
如何将zlib包添加到shell.nix文件以便-p zlib不再需要传递?
注意:构建是使用 cabal v2-build
为了使用堆栈构建,我必须执行以下操作
这是我shell.nix目前的定义方式:
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }:
let
inherit (nixpkgs) pkgs;
f = { mkDerivation, base, directory, stdenv, text, turtle, zlib }:
mkDerivation {
pname = "haskell-editor-setup";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ base directory text turtle zlib ];
description = "Terminal program that will set up Haskell environment with a target selected editor or IDE";
license = stdenv.lib.licenses.gpl3;
};
haskellPackages = if compiler == "default"
then pkgs.haskellPackages
else pkgs.haskell.packages.${compiler};
variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id;
drv = variant (haskellPackages.callPackage f {});
in
if pkgs.lib.inNixShell then drv.env else drv
Run Code Online (Sandbox Code Playgroud)
您想要创建一个将这些作为依赖项的派生。有一个名为的简单构建器runCommand,它运行您提供的脚本。对于 shell.nix,构建器实际上不会被使用,它仅用于提供 shell,因此您可以为其提供一个空脚本:
with import <nixpkgs> { };
runCommand "my-shell" {
buildInputs = [ zlib ];
} ""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |