在NixOS中,如何从命令行运行Haskell可执行文件?

mhe*_*rzl 3 haskell nixos

我尝试按照此Blog的示例从命令行运行Haskell可执行文件。我的机器运行NixOS。

该博客是关于将Markdown识字的haskell编译为html,以发布博客文章。该过程的第一步是hscolour在.lhs文件上运行haskell程序,以创建一个.mkd文件,该文件的代码语法通过html和css突出显示。

cat blah.lhs | hscolour -lit -css > blah.mkd
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行此命令时,出现以下command not found错误。

$ cat blah.lhs | hscolour -lit -css > blah.mkd                                                            
hscolour: command not found
Run Code Online (Sandbox Code Playgroud)

我不确定我遇到的问题是特定于NixOS,还是更广泛地将haskell可执行文件提供给命令行。如何使haskell可执行文件(如hscolour可从命令行获得)?


我试图从内部运行此命令nix-shellhscolour已经建成。hscolour仍然找不到该命令。

$ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [hscolour])"
$ cat functor-proofs.lhs | hscolour -li
hscolour: command not found
Run Code Online (Sandbox Code Playgroud)

Chr*_*tin 5

有两件事要知道:

  1. 您不需要GHC,只需要hscolour的可执行文件,您可以从中获取该文件haskell.lib.justStaticExecutables haskellPackages.hscolour

  2. hscolour的二进制文件HsColour不是hscolour

展示:

$ nix-shell -p 'haskell.lib.justStaticExecutables haskellPackages.hscolour' --run 'HsColour --version'
HsColour 1.24
Run Code Online (Sandbox Code Playgroud)