···137this to get them or their reverse dependencies to compile in our package set.
1384. For all packages, for which the newest Hackage version is not the default
139version, there will also be a `haskellPackages.foo_x_y_z` package with the
140-newest version.
000001415. For some packages, we also manually add other `haskellPackages.foo_x_y_z`
142versions, if they are required for a certain build.
143···161162The [Haskell builder in nixpkgs](#haskell-mkderivation) does no such thing.
163It will simply take as input packages with names off the desired dependencies
164-and just check whether they fulfill the version bounds and (by default, see
165-`jailbreak`) fail if they don’t.
166167-The package resolution is done by the `haskellPackages.callPackage` function
168-which will, e.g., use `haskellPackages.aeson` for a package input of name
169-`aeson`.
00170While this is the default behavior, it is possible to override the dependencies
171for a specific package, see
172[`override` and `overrideScope`](#haskell-overriding-haskell-packages).
···137this to get them or their reverse dependencies to compile in our package set.
1384. For all packages, for which the newest Hackage version is not the default
139version, there will also be a `haskellPackages.foo_x_y_z` package with the
140+newest version. The `x_y_z` part encodes the version with dots replaced by
141+underscores. When the newest version changes by a new release to Hackage the
142+old package will disappear under that name and be replaced by a newer one under
143+the name with the new version. The package name including the version will
144+also disappear when the default version e.g. from Stackage catches up with the
145+newest version from Hackage.
1465. For some packages, we also manually add other `haskellPackages.foo_x_y_z`
147versions, if they are required for a certain build.
148···166167The [Haskell builder in nixpkgs](#haskell-mkderivation) does no such thing.
168It will simply take as input packages with names off the desired dependencies
169+and just check whether they fulfill the version bounds and fail if they don’t
170+(by default, see `jailbreak` to circumvent this).
171172+The `haskellPackages.callPackage` function does the package resolution.
173+It will, e.g., use `haskellPackages.aeson`which has the default version as
174+described above for a package input of name `aeson`. (More general:
175+`<packages>.callPackage f` will call `f` with named inputs provided from the
176+package set `<packages>`.)
177While this is the default behavior, it is possible to override the dependencies
178for a specific package, see
179[`override` and `overrideScope`](#haskell-overriding-haskell-packages).