gpt4 book ai didi

haskell - 从堆栈项目生成 Nix 包

转载 作者:行者123 更新时间:2023-12-04 08:28:31 24 4
gpt4 key购买 nike

我有一个可以使用 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 { # ...
};
}

查看网上可用的资源,我找不到任何关于如何做到这一点的描述。我不知道这是否意味着 stacknix不打算以这种方式使用。

我在手册中唯一能找到的是 how stack can use nix , 和 stack to nix 转换工具。

我也对多平台打包的替代方案持开放态度。

最佳答案

有了这个最近的merge ,我可以使用以下步骤构建和安装一个简单的堆栈项目:

  • 新建hellostack new hello 合作的项目
  • 将以下行添加到 stack.yaml
    nix:
    enable: true
    shell-file: default.nix
  • 创建 default.nix
    with (import <nixpkgs> { });

    haskell.lib.buildStackProject {
    name = "hello";
    src = ./.;
    }

  • 此时,我可以运行 nix-build构建项目,结果将在 ./result/bin/hello-exe
    如果我想安装,我会运行 nix-env -i -f default.nix
    旁注: nix-build每次运行时都会下载堆栈的构建计划。

    我想在进行更改的同时逐步构建我的项目,所以我主要只是放入 shell 并调用 stack build那里。

    关于haskell - 从堆栈项目生成 Nix 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861022/

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