2017-11-19 11 views
4

私はnix-env -i ghcでghcをインストールできました。GHCi経由でNixosにアクセスできるようにHaskellライブラリをインストールするにはどうしたらいいですか?

私は今、Haskellライブラリをインストールしたいと思いますが、これはどのように行うべきですか?例えば、turtlehttps://hackage.haskell.org/package/turtle)のライブラリです。

しかし私は、ghciimport Turtleを実行すると失敗し、nix-env -f "<nixpkgs>" -iA haskellPackages.turtleを実行しました:ghc-pkg list

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. 

出力:

/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 

答えて

3

をこれが原因純度のNixOSに動作が異なります。 NixOSのGHCは、独自の不変インストールディレクトリと、ユーザがインストールしたパッケージをcabal installと見るだけです。

ghciを実行したときにすばらしいセットのパッケージを提供するGHCラッパーをユーザープロファイルにインストールすることができます。

ファイルmy-ghc.nix作成します。

(import <nixpkgs> {}).haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [ 
    lens 
    aeson 
    turtle 
]) 

は、名前の衝突を避けるために、あなたの以前の試みをアンインストール:ファイルを編集することが

nix-env -if my-ghc.nix 

nix-env -e ghc turtle 

は包まれたGHCをインストールしますそのコマンドを再実行してください。

プロジェクトで作業しているときは、cabal2nixnix-shellを使用することをお勧めします。 (ご紹介はOliver Charles' blog postをご覧ください)

関連する問題