NixOS:在系统范围内使用GHC ver 7.8.3

时间:2015-02-02 18:26:20

标签: haskell override default ghc nixos

我想让GHC 7.8.3成为默认的系统范围的Haskell编译器,而且我不想安装整个平台;这是我的configurarion.nix文件的一部分:

{
    environment.systemPackages = with pkgs; [ 
        haskellPackages_ghc783_profiling.alex
        haskellPackages_ghc783_profiling.happy 
        # ghc.ghc783 -- not sure about this one
        haskellPackages_ghc783_profiling.ghc
        haskellPackages_ghc783_profiling.cabalInstall
    ];
}

然而,版本7.6.3默认显示,我无法想象它来自哪里......

$ ghc --verion
$ The Glorious Glasgow Haskell Compilation System, version 7.6.3

我在Wiki pages找到了一些提示:

pkgs : {
   packageOverrides = self : rec {
     hsEnv = self.haskellPackages.ghcWithPackages (self : [
         self.haskellPlatform
         # add more packages here
         #
         #   I tried to replace `self.haskellPlatform`
         #   with `self:ghc783`, 
         #   with `self:haskellPackages.ghc_783_profiling.ghc`, and
         #   with `self:ghc`, but all that produces errors.
     ]);
   };
 }

那么,将7.8.3版本作为默认值的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

要在系统范围内使用特定的GHC版本,我使用模块like this one:

使用nixpkgs.config.packageOverrideshaskellPackages重命名为所需版本并添加haskell环境:

nixpkgs.config.cabal.libraryProfiling = true;
nixpkgs.config.packageOverrides = in_pkgs : rec
  { 
    haskellPackages = in_pkgs.haskellPackages_ghc784_profiling;
    hsEnv = in_pkgs.haskellPackages_ghc784_profiling.ghcWithPackages hsPkgs;
  }

hsPkgs定义为包列表构造函数:

hsEnv添加到environment.systemPackages

environment.systemPackages = [ hsEnv ];

答案 1 :(得分:0)

也许您已将其安装在您的用户nix环境中?试试nix-env -q

相关问题