首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nix中从haskell包(使用stack / cabal)构建可执行文件?

如何在nix中从haskell包(使用stack / cabal)构建可执行文件?
EN

Stack Overflow用户
提问于 2020-12-09 17:11:32
回答 1查看 222关注 0票数 0

我正在寻找类似这样的东西:

shell.nix

代码语言:javascript
复制
{ pkgs ? import <nixpkgs> {} }:
let
  threadscope = ...
  speedscope = ...
in
  stdenv.mkDerivation {
    name = "haskell-env";
    nativeBuildInputs = [
      # Haskell tools
      ghcid ghc

      # Profiling tools
      threadscope
      speedscope
    ];
  }

然后我就可以使用nix-shell

代码语言:javascript
复制
% nix-shell
...
nix-shell % threadscope <some-commands>
nix-shell % speedscope <some-commands>

你通常只是从github / hackage / stackage的源代码构建,还是使用pkgs.haskellPackages.<my-package>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-09 19:16:48

我通常使用haskellPackages的工具。

如果你只想要一个带有工具的shell,你可以使用这样的表达式。

代码语言:javascript
复制
{ pkgs ? import <nixpkgs> {} }:

let
  # Select a package set. haskellPackages is recommended, but
  # if you need a different ghc, use pkgs.haskell.packages.ghc8102 for example
  haskellPackages = pkgs.haskellPackages;

in
  pkgs.mkShell {
    nativeBuildInputs = [
      # Haskell tools
      haskellPackages.ghc
      haskellPackages.ghcid

      # Profiling tools
      haskellPackages.threadscope
      # pkgs.speedscope (not packaged yet)
    ];
  }

如果需要具有特定预编译库的shell,可以使用ghcWithPackages函数而不是ghc。如果你想为你的本地Haskell包预编译依赖项,你可以用the haskellPackages.shellFor function替换pkgs.mkShell

如果你想打包speedscope,Nixpkgs手册文档the packaging process for node packages

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65213744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档