I have been reading this StackOverflow post in which we are advised to use the haskellng
package set.
I have also read this but I did not understand what haskellng
is.
I have read this too, but I still don't know what haskellng
is.
Could someone please explain what haskellng
is in a simple, clear way?
Why does haskellng
matter ? Why is it good ?
I understand that haskellng
is replacing something. But what is that something that it replaces ? Why does that something need to be replaced ?
In this post it is written:
So I'll never have to update if I don't want to?
My guess is that 'haskellPackages' and 'haskellngPackages' will co-exist for a while. Personally, I switched to Haskell NG, though, and I won't maintain any packages in the old hierarchy anymore. I suppose other contributors will do the same thing. Once you've converted your setup to 'haskellngPackages', there's no reason to look back, really.
What is the difference between 'haskellPackages' and 'haskellngPackages' ?
What is 'haskellPackages' ? Where does it come from ? What is it used for ?
Also in the same post they write:
Why should I care about this "new infrastructure"?
The new code will break evaluation of any Haskell-related configuration you may have in ~/.nixpkgs/config.nix or /etc/nixos/configuration.nix.
Privately generated cabal2nix expressions will cease to compile.
Installations that rely on ghc-wrapper finding GHC libraries automatically in your ~/.nix-profile are obsolete. If you use this approach, you won't be able to update your profile anymore.
What is the new code ? What was the old code ? Why is the new code breaking what ?
Well,
haskellng
is the next generation Nix Haskell package set made for Nix. I think most of the work was done by Peter Simons. But note that in the latest master version,haskellngPackages
has been renamed back tohaskellPackages
. So the difference doesn't matter if you are using living in the unstable channel.With
haskellng
, I guess everything is automated. Someone uploads a package to hackage and in around a week, that package derivation is automatically included in the nix haskell package set (undexnixpkgs
) by some process (I guess it makes use ofcabal2nix
).In the latest master branch there is no difference between them as explained above.
It was the eariler infrastructure for Haskell nix packages. It was used for, um, creating and building Haskell packages.
The new code is the
haskellngPackages
. The old code washaskellPackages
. But it doesn't matter now as haskellng has been renamed back to the old name and the old code I guess is removed.