2015-02-02 3 views
2

Я хочу, чтобы GHC 7.8.3 был по умолчанию системным компилятором Haskell, и я не хочу устанавливать всю платформу; вот часть моего configurarion.nix файла:NixOS: используйте GHC ver 7.8.3 в системе

{ 
    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, чтобы быть по умолчанию?

+0

Если вы хотите знать, откуда приходит '7.6.3', вы можете использовать команду' which', чтобы узнать ее путь. – Sibi

+0

Я знаком с 'which', я имел в виду, что он не указан в моей конфигурации, но фактически присутствует в системе (: –

ответ

0

Возможно, вы установили его в свой пользовательский nix env? Попробуйте nix-env -q.

+0

Несчастливо, мой NixOS vm разбился (из-за проблемы с разделом раздела), я смогу создать новый один за несколько дней и перепроверяем.Недушно, у меня есть мои конфиги восстановлены. –

+0

Хммм. С минимальной чистой установкой я больше не могу повторять эту проблему. –

1

Чтобы использовать конкретную версию системы GHC широко использует модуль like this one:

Используйте nixpkgs.config.packageOverrides переименовать haskellPackages до нужной версии и добавить 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; 
    } 

Define hsPkgs будет список пакетов конструктор:

Добавить hsEnv в environment.systemPackages на:

environment.systemPackages = [ hsEnv ]; 
Смежные вопросы