First, pass in `self' again so that overriding works properly (thanks
for pointing that out, @edolstra)
Second, instead of having linuxPackages*.kernel mean something different
inside the set and out, add a new attribute linuxPackages*.kernelDev,
which for the generic kernel is simply linuxPackages*.kernel but for the
manual-config kernel is the `dev' output (which has the build tree,
source tree, etc.)
The second change required trivial modifications in a bunch of
expressions, I verified that all of the linuxPackages* sets defined in
all-packages.nix have the same drv paths before and after the change.
Signed-off-by: Shea Levy <shea@shealevy.com>
modules) together in an attribute set returned by the function
"kernelPackagesFor" that takes a kernel as argument. For instance,
kernelPackages_2_6_23 is the result of calling this function with
kernel_2_6_23.
This is necessary in NixOS to make it easier to override the kernel:
it's not enough to just specify a different kernel (via the
boot.kernel option), but you also need matching nvidiaDriver, aufs,
iwlwifi, etc. Having a single attribute set that contains all
kernel-related packages makes this much easier.
* The kernel now has a passthru attribute "features" that allows NixOS
expressions to test whether a kernel has certain features. For
instance, the externel "iwlwifi" kernel module package should only
be built on kernels < 2.6.24, as kernels >= 2.6.24 have iwlwifi
support integrated. So the NixOS expressions can do the test
"kernel.features ? iwlwifi" to see if the iwlwifi package should be
built.
Kernel patches can declare additional features. E.g., the fbsplash
patch adds a "fbSplash" feature.
svn path=/nixpkgs/trunk/; revision=11881