Как установить библиотеку Haskell для доступа через GHCi с помощью Nixos?
мне удалось установить ghc с nix-env -i ghc
.
Я хотел бы установить библиотеку Haskell сейчас, как это должно быть сделано? Например,turtle
(https://hackage.haskell.org/package/turtle Библиотека).
Я nix-env -f "<nixpkgs>" -iA haskellPackages.turtle
, однако работает ghci
и import Turtle
не удается:
Prelude> import Turtle
<no location info>: error:
Could not find module ‘Turtle’
It is not a module in the current program, or in any known package.
выход ghc-pkg list
:
/nix/store/fvf278s3lqsjv488ahhdi8jx6i0qzsr9-ghc-8.0.2/lib/ghc-8.0.2/package.conf.d
Cabal-1.24.2.0
array-0.5.1.1
base-4.9.1.0
binary-0.8.3.0
bytestring-0.10.8.1
containers-0.5.7.1
deepseq-1.4.2.0
directory-1.3.0.0
filepath-1.4.1.1
ghc-8.0.2
ghc-boot-8.0.2
ghc-boot-th-8.0.2
ghc-prim-0.5.0.0
ghci-8.0.2
haskeline-0.7.3.0
hoopl-3.10.2.1
hpc-0.6.0.3
integer-gmp-1.0.0.1
pretty-1.1.3.3
process-1.4.3.0
rts-1.0
template-haskell-2.11.1.0
terminfo-0.4.0.2
time-1.6.0.1
transformers-0.5.2.0
unix-2.7.2.1
xhtml-3000.2.1
1 ответов
это работает по-разному на NixOS из-за чистоты. GHC NixOS будет смотреть только на свой собственный неизменяемый каталог установки и пакеты, которые были установлены пользователем с cabal install
.
что вы можете сделать, это установить в свой профиль пользователя обертку GHC, которая предоставляет хороший набор пакетов при запуске ghci
.
создайте файл my-ghc.nix
:
(import <nixpkgs> {}).haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [
lens
aeson
turtle
])
удалите предыдущую попытку, чтобы избежать имени столкновения:
nix-env -e ghc turtle
установите обернутый GHC:
nix-env -if my-ghc.nix
вы можете отредактировать файл в будущем и повторно запустить эту команду.
когда я работаю над проектом, я предпочитаю использовать cabal2nix
и nix-shell
. (Для введения см. сообщение в блоге Оливера Чарльза)