What is haskellng? What is the difference between 'haskellPackages' and 'haskellngPackages'?

562 views Asked by At

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 ?

2

There are 2 answers

8
Sibi On BEST ANSWER

Could someone please explain what haskellng is in a simple, clear way?

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 to haskellPackages. So the difference doesn't matter if you are using living in the unstable channel.

Why does haskellng matter ? Why is it good ?

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 (undex nixpkgs) by some process (I guess it makes use of cabal2nix).

What is the difference between 'haskellPackages' and 'haskellngPackages' ?

In the latest master branch there is no difference between them as explained above.

What is 'haskellPackages' ? Where does it come from ? What is it used for ?

It was the eariler infrastructure for Haskell nix packages. It was used for, um, creating and building Haskell packages.

What is the new code ? What was the old code ? Why is the new code it breaking what ?

The new code is the haskellngPackages. The old code was haskellPackages. But it doesn't matter now as haskellng has been renamed back to the old name and the old code I guess is removed.

0
jhegedus On

I asked this on the #nix channel :

me: Could someone please explain what haskellng is ? What is haskellng? What is the difference between 'haskellPackages' and 'haskellngPackages'?

Fuuzetsu: it no longer matters, it's the default new architecture and the old one doesn't exist

Fuuzetsu: we had 2 Haskell architectures for a while and -ng was the new one