我正在寻找类似这样的东西:
shell.nix
{ pkgs ? import <nixpkgs> {} }:
let
threadscope = ...
speedscope = ...
in
stdenv.mkDerivation {
name = "haskell-env";
nativeBuildInputs = [
# Haskell tools
ghcid ghc
# Profiling tools
threadscope
speedscope
];
}然后我就可以使用nix-shell了
% nix-shell
...
nix-shell % threadscope <some-commands>
nix-shell % speedscope <some-commands>你通常只是从github / hackage / stackage的源代码构建,还是使用pkgs.haskellPackages.<my-package>
发布于 2020-12-09 19:16:48
我通常使用haskellPackages的工具。
如果你只想要一个带有工具的shell,你可以使用这样的表达式。
{ 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
https://stackoverflow.com/questions/65213744
复制相似问题