相关疑难解决方法(0)

从堆栈项目生成Nix包

我有一个可以构建和安装的软件应用程序stack.我想为Linux和Mac提供二进制包.为此,我正在考虑nix,因为除其他外,它可以在Linux和Mac中使用.这将节省我必须维护两种包类型的麻烦.

在阅读了如何nix定义包之后,我希望stack可以使用如下配置构建基于项目的项目:

{ stdenv, fetchurl, stack }: # we need to depend on stack

stdenv.mkDerivation { 
  name = "some-haskell-package-0.1"; 
  builder = ./builder.sh; # here we would call `stack install` 
  src = fetchurl {  # ...
  };
}
Run Code Online (Sandbox Code Playgroud)

看一下在线可用的资源,我找不到任何关于如何做到这一点的描述.我不知道这是否意味着stack并且nix不打算以这种方式使用.

我能找到的手册中的唯一的事情就是如何stack可以使用nix,并且stacknix转换工具.

我也愿意接受多平台包装的替代方案.

haskell package-managers nix haskell-stack

8
推荐指数
1
解决办法
610
查看次数

使用nix时不使用stack --nix的原因是什么?

我在,NixOS但我认为这个问题应该适用于任何使用的平台nix

我通过试用发现stack可以与几个选项一起使用来构建项目,但我不完全了解它们之间的区别,

  1. stack
  2. stack --system-ghc
  3. stack --nix

问题

  1. 如果我使用的是nix(在我的情况下为NixOS),我有什么理由不想使用--nix参数吗?
  2. nix处理haskell项目的方式是什么,应该使用cabal(cabal2nix)代替stack
  3. 我发现堆栈正在重建许多已经由安装的库nix,这是什么原因?

nix haskell-stack

5
推荐指数
1
解决办法
224
查看次数

每当我尝试安装某些东西时都会抛出堆栈错误

每当我尝试使用 、 和其他几个软件包安装某些东西时stack$ stack install hip它们$ stack install Gifcurry都会抛出相同的错误:

Downloaded lts-12.9 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""
Run Code Online (Sandbox Code Playgroud)

这是我第一次尝试使用stack安装任何东西,所以我不知道该怎么做。在做这件事之前我确实跑步了$ stack upgrade

堆栈版本是1.5.1 x86_64,它位于目录中usr/bin/stack

haskell haskell-stack

1
推荐指数
1
解决办法
100
查看次数

标签 统计

haskell-stack ×3

haskell ×2

nix ×2

package-managers ×1