В NixOS, как запустить исполняемый файл Haskell из командной строки?

Я пытаюсь запустить исполняемые файлы Haskell из командной строки, следуя примеру этот блог. Моя машина работает под управлением NixOS.

Блог посвящен компиляции грамотного разметки haskell в html для публикации постов в блоге. Одним из шагов в этом процессе является запуск программы haskell hscolour в файле .lhs для создания файла .mkd с выделенным синтаксисом кода с помощью html и css.

cat blah.lhs | hscolour -lit -css > blah.mkd

Однако, когда я пытаюсь запустить эту команду, я получаю следующую ошибку command not found.

$ cat blah.lhs | hscolour -lit -css > blah.mkd                                                            
hscolour: command not found

Я не уверен, связана ли эта проблема с NixOS или с тем, что исполняемые файлы haskell доступны для командной строки в более широком смысле. Как сделать исполняемые файлы Haskell, такие как hscolour, доступными из командной строки?


Я попытался запустить эту команду из nix-shell, в котором был построен hscolour. Команда hscolour по-прежнему не найдена.

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

person mherzl    schedule 18.01.2018    source источник


Ответы (2)


Две вещи, которые нужно знать:

  1. Вам не нужен GHC, вам просто нужен исполняемый файл от hscolour, который вы можете получить как haskell.lib.justStaticExecutables haskellPackages.hscolour.

  2. Двоичный файл для hscolor называется HsColour, а не hscolour.

Показывать:

$ nix-shell -p 'haskell.lib.justStaticExecutables haskellPackages.hscolour' --run 'HsColour --version'
HsColour 1.24
person Chris Martin    schedule 18.01.2018

Я расскажу о другом подходе, который вскоре обнаружил, ища исполняемый файл в NixOS.

$ `nix-build --no-out-link "<nixpkgs>"   -A haskellPackages.hscolour`/bin/HsColour --version                         
HsColour 1.24
person palik    schedule 18.01.2018