about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/os-specific/linux/kernel/builder.sh10
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix288
-rw-r--r--pkgs/os-specific/linux/kernel/generic.nix20
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.0.nix258
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.10.nix303
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.2.nix269
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.4.nix280
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.8.nix299
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.9.nix302
-rw-r--r--pkgs/os-specific/linux/kernel/linux-rpi-3.6.nix51
-rw-r--r--pkgs/top-level/all-packages.nix10
11 files changed, 399 insertions, 1691 deletions
diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh
index 47c7a22c177a1..bea53e9c4dda0 100644
--- a/pkgs/os-specific/linux/kernel/builder.sh
+++ b/pkgs/os-specific/linux/kernel/builder.sh
@@ -10,19 +10,20 @@ postPatch() {
     # Makefiles are full of /bin/pwd, /bin/false, /bin/bash, etc.
     # Patch these away, assuming the tools are in $PATH.
     for mf in $(find -name Makefile); do
-	echo "stripping FHS paths in \`$mf'..."
-	sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g'
+        echo "stripping FHS paths in \`$mf'..."
+        sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g'
     done
 }
 
 configurePhase() {
     if test -n "$preConfigure"; then
-        eval "$preConfigure";
+        eval "$preConfigure"
     fi
 
     export INSTALL_PATH=$out
     export INSTALL_MOD_PATH=$out
 
+    substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
 
     # Set our own localversion, if specified.
     rm -f localversion*
@@ -30,7 +31,6 @@ configurePhase() {
         echo "$localVersion" > localversion-nix
     fi
 
-
     # Patch kconfig to print "###" after every question so that
     # generate-config.pl can answer them.
     sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c
@@ -112,7 +112,7 @@ installPhase() {
 
         if test "$dontStrip" = "1"; then
             # copy any debugging info that can be found
-            cp --parents -rv `find -name \*.debug -o -name debug.a`	\
+            cp --parents -rv `find -name \*.debug -o -name debug.a`     \
                "$out/lib/modules/$version/build"
         fi
 
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
new file mode 100644
index 0000000000000..4b19cd2aa2a73
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -0,0 +1,288 @@
+{ stdenv, version, kernelPlatform, extraConfig }:
+
+with stdenv.lib;
+
+''
+  # Power management and debugging.
+  DEBUG_KERNEL y
+  PM_ADVANCED_DEBUG y
+  PM_RUNTIME y
+  TIMER_STATS y
+  ${optionalString (versionOlder version "3.10") ''
+    USB_SUSPEND y
+  ''}
+  BACKTRACE_SELF_TEST n
+  CPU_NOTIFIER_ERROR_INJECT? n
+  DEBUG_DEVRES n
+  DEBUG_NX_TEST n
+  DEBUG_STACK_USAGE n
+  DEBUG_STACKOVERFLOW n
+  RCU_TORTURE_TEST n
+  SCHEDSTATS n
+
+  # Support drivers that need external firmware.
+  STANDALONE n
+
+  # Make /proc/config.gz available.
+  IKCONFIG_PROC y
+
+  # Optimize with -O2, not -Os.
+  CC_OPTIMIZE_FOR_SIZE n
+
+  # Enable the kernel's built-in memory tester.
+  MEMTEST y
+
+  # Include the CFQ I/O scheduler in the kernel, rather than as a
+  # module, so that the initrd gets a good I/O scheduler.
+  IOSCHED_CFQ y
+  BLK_CGROUP y # required by CFQ
+
+  # Enable NUMA.
+  NUMA? y
+
+  # Disable some expensive (?) features.
+  FTRACE n
+  KPROBES n
+  PM_TRACE_RTC n
+
+  # Enable various subsystems.
+  ACCESSIBILITY y # Accessibility support
+  AUXDISPLAY y # Auxiliary Display support
+  DONGLE y # Serial dongle support
+  HIPPI y
+  MTD_COMPLEX_MAPPINGS y # needed for many devices
+  ${optionalString (versionOlder version "3.2") ''
+    NET_POCKET y # enable pocket and portable adapters
+  ''}
+  SCSI_LOWLEVEL y # enable lots of SCSI devices
+  SCSI_LOWLEVEL_PCMCIA y
+  SPI y # needed for many devices
+  SPI_MASTER y
+  WAN y
+
+  # Networking options.
+  IP_PNP n
+  IPV6_PRIVACY y
+  NETFILTER_ADVANCED y
+  IP_VS_PROTO_TCP y
+  IP_VS_PROTO_UDP y
+  IP_VS_PROTO_ESP y
+  IP_VS_PROTO_AH y
+  IP_DCCP_CCID3 n # experimental
+  CLS_U32_PERF y
+  CLS_U32_MARK y
+
+  # Wireless networking.
+  CFG80211_WEXT y # Without it, ipw2200 drivers don't build
+  IPW2100_MONITOR y # support promiscuous mode
+  IPW2200_MONITOR y # support promiscuous mode
+  HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
+  HOSTAP_FIRMWARE_NVRAM y
+  ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
+  ATH9K_AHB y # Ditto, AHB bus
+  ${optionalString (versionAtLeast version "3.2") ''
+    B43_PHY_HT y
+  ''}
+  BCMA_HOST_PCI y
+
+  # Some settings to make sure that fbcondecor works - in particular,
+  # disable tileblitting and the drivers that need it.
+
+  # Enable various FB devices.
+  FB y
+  FB_EFI y
+  FB_NVIDIA_I2C y # Enable DDC Support
+  FB_RIVA_I2C y
+  FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
+  FB_ATY_GX y # Mach64 GX support
+  FB_SAVAGE_I2C y
+  FB_SAVAGE_ACCEL y
+  FB_SIS_300 y
+  FB_SIS_315 y
+  FB_3DFX_ACCEL y
+  FB_GEODE y
+
+  # Video configuration.
+  # Enable KMS for devices whose X.org driver supports it.
+  DRM_I915_KMS y
+  ${optionalString (versionOlder version "3.9") ''
+    DRM_RADEON_KMS y
+  ''}
+  # Hybrid graphics support
+  VGA_SWITCHEROO y
+
+  # Sound.
+  SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
+  SND_HDA_INPUT_BEEP y # Support digital beep via input layer
+  SND_USB_CAIAQ_INPUT y
+  PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
+
+  # USB serial devices.
+  USB_SERIAL_GENERIC y # USB Generic Serial Driver
+  USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
+  USB_SERIAL_KEYSPAN_USA28 y
+  USB_SERIAL_KEYSPAN_USA28X y
+  USB_SERIAL_KEYSPAN_USA28XA y
+  USB_SERIAL_KEYSPAN_USA28XB y
+  USB_SERIAL_KEYSPAN_USA19 y
+  USB_SERIAL_KEYSPAN_USA18X y
+  USB_SERIAL_KEYSPAN_USA19W y
+  USB_SERIAL_KEYSPAN_USA19QW y
+  USB_SERIAL_KEYSPAN_USA19QI y
+  USB_SERIAL_KEYSPAN_USA49W y
+  USB_SERIAL_KEYSPAN_USA49WLC y
+
+  # Filesystem options - in particular, enable extended attributes and
+  # ACLs for all filesystems that support them.
+  EXT2_FS_XATTR y
+  EXT2_FS_POSIX_ACL y
+  EXT2_FS_SECURITY y # Ext2 Security Labels
+  EXT2_FS_XIP y # Ext2 execute in place support
+  EXT4_FS_POSIX_ACL y
+  EXT4_FS_SECURITY y
+  REISERFS_FS_XATTR y
+  REISERFS_FS_POSIX_ACL y
+  REISERFS_FS_SECURITY y
+  JFS_POSIX_ACL y
+  JFS_SECURITY y
+  XFS_QUOTA y
+  XFS_POSIX_ACL y
+  XFS_RT y # XFS Realtime subvolume support
+  OCFS2_DEBUG_MASKLOG n
+  BTRFS_FS_POSIX_ACL y
+  UBIFS_FS_XATTR? y
+  UBIFS_FS_ADVANCED_COMPR y
+  NFSD_V2_ACL y
+  NFSD_V3 y
+  NFSD_V3_ACL y
+  NFSD_V4 y
+  NFS_FSCACHE y
+  CIFS_XATTR y
+  CIFS_POSIX y
+  CIFS_FSCACHE y
+
+  # Security related features.
+  STRICT_DEVMEM y # Filter access to /dev/mem
+  SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
+
+  # Misc. options.
+  8139TOO_8129 y
+  8139TOO_PIO n # PIO is slower
+  AIC79XX_DEBUG_ENABLE n
+  AIC7XXX_DEBUG_ENABLE n
+  AIC94XX_DEBUG n
+  ${optionalString (versionAtLeast version "3.3") ''
+    AUDIT_LOGINUID_IMMUTABLE y
+  ''}
+  B43_PCMCIA y
+  BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
+  BLK_DEV_IDEACPI y # IDE ACPI support
+  BLK_DEV_INTEGRITY y
+  BSD_PROCESS_ACCT_V3 y
+  BT_HCIUART_BCSP y
+  BT_HCIUART_H4 y # UART (H4) protocol support
+  BT_HCIUART_LL y
+  BT_RFCOMM_TTY? y # RFCOMM TTY support
+  CRASH_DUMP n
+  ${optionalString (versionOlder version "3.1") ''
+    DMAR? n # experimental
+  ''}
+  DVB_DYNAMIC_MINORS? y # we use udev
+  ${optionalString (versionAtLeast version "3.3") ''
+    EFI_STUB y # EFI bootloader in the bzImage itself
+  ''}
+  FHANDLE y # used by systemd
+  FUSION y # Fusion MPT device support
+  IDE_GD_ATAPI y # ATAPI floppy support
+  IRDA_ULTRA y # Ultra (connectionless) protocol
+  JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
+  JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
+  JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
+  JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
+  LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
+  LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
+  LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
+  LOGO n # not needed
+  MEDIA_ATTACH y
+  MEGARAID_NEWGEN y
+  MICROCODE_AMD y
+  MODVERSIONS y
+  MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
+  MTRR_SANITIZER y
+  NET_FC y # Fibre Channel driver support
+  PPP_MULTILINK y # PPP multilink support
+  REGULATOR y # Voltage and Current Regulator Support
+  ${optionalString (versionAtLeast version "3.6") ''
+    RC_DEVICES? y # Enable IR devices
+  ''}
+  SCSI_LOGGING y # SCSI logging facility
+  SERIAL_8250 y # 8250/16550 and compatible serial support
+  SLIP_COMPRESSED y # CSLIP compressed headers
+  SLIP_SMART y
+  THERMAL_HWMON y # Hardware monitoring support
+  USB_DEBUG n
+  USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
+  USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
+  X86_CHECK_BIOS_CORRUPTION y
+  X86_MCE y
+
+  # Linux containers.
+  RT_GROUP_SCHED? y
+  CGROUP_DEVICE? y
+  ${if versionAtLeast version "3.6" then ''
+    MEMCG y
+    MEMCG_SWAP y
+  '' else ''
+    CGROUP_MEM_RES_CTLR y
+    CGROUP_MEM_RES_CTLR_SWAP y
+  ''}
+  DEVPTS_MULTIPLE_INSTANCES y
+
+  # Enable staging drivers.  These are somewhat experimental, but
+  # they generally don't hurt.
+  STAGING y
+
+  # PROC_EVENTS requires that the netlink connector is not built
+  # as a module.  This is required by libcgroup's cgrulesengd.
+  CONNECTOR y
+  PROC_EVENTS y
+
+  # Tracing.
+  FTRACE y
+  FUNCTION_TRACER y
+  FTRACE_SYSCALLS y
+  SCHED_TRACER y
+
+  # Devtmpfs support.
+  DEVTMPFS y
+
+  # Easier debugging of NFS issues.
+  ${optionalString (versionAtLeast version "3.4") ''
+    SUNRPC_DEBUG y
+  ''}
+
+  # Virtualisation.
+  XEN_DOM0? y
+
+  # Media support.
+  ${optionalString (versionAtLeast version "3.6") ''
+    MEDIA_DIGITAL_TV_SUPPORT y
+    MEDIA_CAMERA_SUPPORT y
+    MEDIA_RC_SUPPORT y
+  ''}
+  ${optionalString (versionAtLeast version "3.7") ''
+    MEDIA_USB_SUPPORT y
+  ''}
+
+  # Our initrd init uses shebang scripts, so can't be modular.
+  ${optionalString (versionAtLeast version "3.10") ''
+    BINFMT_SCRIPT y
+  ''}
+
+  # Enable the 9P cache to speed up NixOS VM tests.
+  9P_FSCACHE y
+  9P_FS_POSIX_ACL y
+
+  ${kernelPlatform.kernelExtraConfig or ""}
+  ${extraConfig}
+''
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index 85f916de1a35b..ad243ae5b7c14 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, mktemp, module_init_tools
+{ stdenv, fetchurl, perl, mktemp, module_init_tools, bc
 
 , # The kernel source tarball.
   src
@@ -6,15 +6,12 @@
 , # The kernel version.
   version
 
+, # Overrides to the kernel config.
+  extraConfig ? ""
+
 , # The version number used for the module directory
   modDirVersion ? version
 
-, # The kernel configuration.
-  config
-
-, # The kernel configuration when cross building.
-  configCross ? {}
-
 , # An attribute set whose attributes express the availability of
   # certain features in this kernel.  E.g. `{iwlwifi = true;}'
   # indicates a kernel that provides Intel wireless support.  Used in
@@ -40,7 +37,6 @@
   # we force building the target asked: bzImage/zImage/uImage/...
   postBuild ? "make $makeFlags $kernelTarget; make $makeFlags -C scripts unifdef"
 
-, extraNativeBuildInputs ? []
 , ...
 }:
 
@@ -59,6 +55,12 @@ let
         map ({extraConfig ? "", ...}: extraConfig) kernelPatches;
     in lib.concatStringsSep "\n" ([baseConfig] ++ configFromPatches);
 
+  configWithPlatform = kernelPlatform:
+    import ./common-config.nix { inherit stdenv version kernelPlatform extraConfig; };
+
+  config = configWithPlatform stdenv.platform;
+  configCross = configWithPlatform stdenv.cross.platform;
+
 in
 
 stdenv.mkDerivation {
@@ -85,7 +87,7 @@ stdenv.mkDerivation {
   # For UML and non-PC, just ignore all options that don't apply (We are lazy).
   ignoreConfigErrors = stdenv.platform.name != "pc";
 
-  nativeBuildInputs = [ perl mktemp ] ++ extraNativeBuildInputs;
+  nativeBuildInputs = [ perl mktemp bc ];
 
   buildInputs = lib.optional (stdenv.platform.uboot != null)
     (ubootChooser stdenv.platform.uboot);
diff --git a/pkgs/os-specific/linux/kernel/linux-3.0.nix b/pkgs/os-specific/linux/kernel/linux-3.0.nix
index 9f1a36db7dd7b..48197ae14ca50 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.0.nix
@@ -1,252 +1,12 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools
-, ... }:
+{ stdenv, fetchurl, ... } @ args:
 
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      USB_SUSPEND y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
+import ./generic.nix (args // rec {
+  version = "3.0.88";
 
-      # Support drivers that need external firmware.
-      STANDALONE n
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "1icfkbn9a5cpwiax1xklvpqyjcvqij3dwib009fipp53z4pn5bz4";
+  };
 
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      NUMA? n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      NET_POCKET y # enable pocket and portable adapters
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      CIFS_XATTR y
-      CIFS_POSIX y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_L2CAP y
-      BT_SCO y # audio support
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS y # we use udev
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      CGROUP_MEM_RES_CTLR? y
-      CGROUP_MEM_RES_CTLR_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.0.80";
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-      sha256 = "0f3md117bh8n5izkhjd2jp096jqmwz6wpxn7rf8x2x9cz4jz0cqx";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+  features.iwlwifi = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-3.10.nix b/pkgs/os-specific/linux/kernel/linux-3.10.nix
index 7de8aa85392b2..4b5e4d001a645 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.10.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.10.nix
@@ -1,287 +1,16 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools, bc
-, ... }:
-
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT? n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
-
-      # Support drivers that need external firmware.
-      STANDALONE n
-
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Enable NUMA.
-      NUMA? y
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI? y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR? y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-      B43_PHY_HT y
-      BCMA_HOST_PCI y
-      CFG80211_WEXT y # Without it, ipw2200 drivers don't build
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS? y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR? y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      NFS_FSCACHE y
-      CIFS_XATTR y
-      CIFS_POSIX y
-      CIFS_FSCACHE y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      AUDIT_LOGINUID_IMMUTABLE y
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS? y # we use udev
-      EFI_STUB y # EFI bootloader in the bzImage itself
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH? y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      RC_DEVICES y # Enable IR devices
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      MEMCG? y
-      MEMCG_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Tracing
-      FTRACE y
-      FUNCTION_TRACER y
-      FTRACE_SYSCALLS y
-      SCHED_TRACER y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      # Media support
-      MEDIA_CAMERA_SUPPORT? y
-      MEDIA_RC_SUPPORT? y
-      MEDIA_USB_SUPPORT y
-
-      # Easier debug of NFS issues
-      SUNRPC_DEBUG y
-
-      # Our initrd init uses shebang scripts, so can't be modular
-      BINFMT_SCRIPT y
-
-      # Enable the 9P cache to speed up NixOS VM tests.
-      9P_FSCACHE y
-      9P_FS_POSIX_ACL y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.10.4";
-    testing = false;
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "1f0ynk37bhkllx2ahzp587yr8cvn809v2ad0sn7z92yv48vl4nly";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-    features.efiBootStub = true;
-    features.needsCifsUtils = true;
-    features.canDisableNetfilterConntrackHelpers = true;
-    features.netfilterRPFilter = true;
-
-    extraNativeBuildInputs = [bc];
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+{ stdenv, fetchurl, ... } @ args:
+
+import ./generic.nix (args // rec {
+  version = "3.10.4";
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "1f0ynk37bhkllx2ahzp587yr8cvn809v2ad0sn7z92yv48vl4nly";
+  };
+
+  features.iwlwifi = true;
+  features.efiBootStub = true;
+  features.needsCifsUtils = true;
+  features.canDisableNetfilterConntrackHelpers = true;
+  features.netfilterRPFilter = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-3.2.nix b/pkgs/os-specific/linux/kernel/linux-3.2.nix
index 1e1e41a360a96..9b1d1bcf6c1c0 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.2.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.2.nix
@@ -1,263 +1,12 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools
-, ... }:
+{ stdenv, fetchurl, ... } @ args:
 
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      USB_SUSPEND y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
+import ./generic.nix (args // rec {
+  version = "3.2.49";
 
-      # Support drivers that need external firmware.
-      STANDALONE n
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "06xiwcgk6hbcp6g1dpmxb95dzx94s29vzmh1pz4lsglcj1yfrkry";
+  };
 
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Enable NUMA.
-      NUMA? y
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI? y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      NFS_FSCACHE y
-      CIFS_XATTR y
-      CIFS_POSIX y
-      CIFS_FSCACHE y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_L2CAP y
-      BT_SCO y # audio support
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS y # we use udev
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      CGROUP_MEM_RES_CTLR? y
-      CGROUP_MEM_RES_CTLR_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Tracing
-      FTRACE y
-      FUNCTION_TRACER y
-      FTRACE_SYSCALLS y
-      SCHED_TRACER y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.2.49";
-
-    modDirVersion = version;
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-      sha256 = "06xiwcgk6hbcp6g1dpmxb95dzx94s29vzmh1pz4lsglcj1yfrkry";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+  features.iwlwifi = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-3.4.nix b/pkgs/os-specific/linux/kernel/linux-3.4.nix
index e02f9bd5b7b3e..2cb37987ff45f 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.4.nix
@@ -1,271 +1,15 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools
-, ... }:
+{ stdenv, fetchurl, ... } @ args:
 
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      USB_SUSPEND y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT? n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
+import ./generic.nix (args // rec {
+  version = "3.4.55";
 
-      # Support drivers that need external firmware.
-      STANDALONE n
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "1sbb6qa2nb1zwihkdn51q5ac3kn7hrssabn5whx8965hga7yw1dx";
+  };
 
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Enable NUMA.
-      NUMA? y
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI? y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-      B43_PHY_HT y
-      BCMA_HOST_PCI y
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      NFS_FSCACHE y
-      CIFS_XATTR y
-      CIFS_POSIX y
-      CIFS_FSCACHE y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      AUDIT_LOGINUID_IMMUTABLE y
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS y # we use udev
-      EFI_STUB y # EFI bootloader in the bzImage itself
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      CGROUP_MEM_RES_CTLR? y
-      CGROUP_MEM_RES_CTLR_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Tracing
-      FTRACE y
-      FUNCTION_TRACER y
-      FTRACE_SYSCALLS y
-      SCHED_TRACER y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      # Easier debug of NFS issues
-      SUNRPC_DEBUG y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.4.55";
-    testing = false;
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "1sbb6qa2nb1zwihkdn51q5ac3kn7hrssabn5whx8965hga7yw1dx";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-    features.efiBootStub = true;
-    features.needsCifsUtils = true;
-    features.netfilterRPFilter = true;
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+  features.iwlwifi = true;
+  features.efiBootStub = true;
+  features.needsCifsUtils = true;
+  features.netfilterRPFilter = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-3.8.nix b/pkgs/os-specific/linux/kernel/linux-3.8.nix
index 1516f97521de1..f455f4ee7f883 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.8.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.8.nix
@@ -1,283 +1,16 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools
-, ... }:
-
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      USB_SUSPEND y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT? n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
-
-      # Support drivers that need external firmware.
-      STANDALONE n
-
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Enable NUMA.
-      NUMA? y
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI? y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR? y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-      B43_PHY_HT y
-      BCMA_HOST_PCI y
-      CFG80211_WEXT y # Without it, ipw2200 drivers don't build
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR? y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      NFS_FSCACHE y
-      CIFS_XATTR y
-      CIFS_POSIX y
-      CIFS_FSCACHE y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      AUDIT_LOGINUID_IMMUTABLE y
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS? y # we use udev
-      EFI_STUB y # EFI bootloader in the bzImage itself
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH? y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      RC_DEVICES y # Enable IR devices
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-      XEN_DOM0 y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      MEMCG? y
-      MEMCG_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Tracing
-      FTRACE y
-      FUNCTION_TRACER y
-      FTRACE_SYSCALLS y
-      SCHED_TRACER y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      # Media support
-      MEDIA_SUPPORT y
-      MEDIA_DIGITAL_TV_SUPPORT y
-
-      MEDIA_CAMERA_SUPPORT? y
-      MEDIA_RC_SUPPORT? y
-      MEDIA_USB_SUPPORT y
-
-      # Easier debug of NFS issues
-      SUNRPC_DEBUG y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.8.13";
-    testing = false;
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "0pznsj89020fjl8dhcyf7r5bh95b27727gs0ri9has4i2z63blbw";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-    features.efiBootStub = true;
-    features.needsCifsUtils = true;
-    features.canDisableNetfilterConntrackHelpers = true;
-    features.netfilterRPFilter = true;
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+{ stdenv, fetchurl, ... } @ args:
+
+import ./generic.nix (args // rec {
+  version = "3.8.13";
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "0pznsj89020fjl8dhcyf7r5bh95b27727gs0ri9has4i2z63blbw";
+  };
+
+  features.iwlwifi = true;
+  features.efiBootStub = true;
+  features.needsCifsUtils = true;
+  features.canDisableNetfilterConntrackHelpers = true;
+  features.netfilterRPFilter = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-3.9.nix b/pkgs/os-specific/linux/kernel/linux-3.9.nix
index b3909900c66ae..51bcf35b3fe8c 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.9.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.9.nix
@@ -1,286 +1,16 @@
-args @ { stdenv, fetchurl, extraConfig ? ""
-, perl, mktemp, module_init_tools, bc
-, ... }:
-
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      # Power management and debugging for powertop.
-      DEBUG_KERNEL y
-      PM_ADVANCED_DEBUG y
-      PM_RUNTIME y
-      TIMER_STATS y
-      USB_SUSPEND y
-      BACKTRACE_SELF_TEST n
-      CPU_NOTIFIER_ERROR_INJECT? n
-      DEBUG_DEVRES n
-      DEBUG_NX_TEST n
-      DEBUG_STACK_USAGE n
-      DEBUG_STACKOVERFLOW n
-      RCU_TORTURE_TEST n
-      SCHEDSTATS n
-
-      # Support drivers that need external firmware.
-      STANDALONE n
-
-      # Make /proc/config.gz available.
-      IKCONFIG_PROC y
-
-      # Optimize with -O2, not -Os.
-      CC_OPTIMIZE_FOR_SIZE n
-
-      # Enable the kernel's built-in memory tester.
-      MEMTEST y
-
-      # Include the CFQ I/O scheduler in the kernel, rather than as a
-      # module, so that the initrd gets a good I/O scheduler.
-      IOSCHED_CFQ y
-      BLK_CGROUP y # required by CFQ
-
-      # Enable NUMA.
-      NUMA? y
-
-      # Disable some expensive (?) features.
-      FTRACE n
-      KPROBES n
-      PM_TRACE_RTC n
-
-      # Enable various subsystems.
-      ACCESSIBILITY y # Accessibility support
-      AUXDISPLAY y # Auxiliary Display support
-      DONGLE y # Serial dongle support
-      HIPPI? y
-      MTD_COMPLEX_MAPPINGS y # needed for many devices
-      SCSI_LOWLEVEL y # enable lots of SCSI devices
-      SCSI_LOWLEVEL_PCMCIA y
-      SPI y # needed for many devices
-      SPI_MASTER y
-      WAN y
-
-      # Networking options.
-      IP_PNP n
-      IPV6_PRIVACY y
-      NETFILTER_ADVANCED y
-      IP_VS_PROTO_TCP y
-      IP_VS_PROTO_UDP y
-      IP_VS_PROTO_ESP y
-      IP_VS_PROTO_AH y
-      IP_DCCP_CCID3 n # experimental
-      CLS_U32_PERF y
-      CLS_U32_MARK y
-
-      # Wireless networking.
-      IPW2100_MONITOR y # support promiscuous mode
-      IPW2200_MONITOR? y # support promiscuous mode
-      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-      HOSTAP_FIRMWARE_NVRAM y
-      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-      ATH9K_AHB y # Ditto, AHB bus
-      B43_PHY_HT y
-      BCMA_HOST_PCI y
-      CFG80211_WEXT y # Without it, ipw2200 drivers don't build
-
-      # Some settings to make sure that fbcondecor works - in particular,
-      # disable tileblitting and the drivers that need it.
-
-      # Enable various FB devices.
-      FB y
-      FB_EFI y
-      FB_NVIDIA_I2C y # Enable DDC Support
-      FB_RIVA_I2C y
-      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
-      FB_ATY_GX y # Mach64 GX support
-      FB_SAVAGE_I2C y
-      FB_SAVAGE_ACCEL y
-      FB_SIS_300 y
-      FB_SIS_315 y
-      FB_3DFX_ACCEL y
-      FB_GEODE y
-
-      # Video configuration
-      # Enable KMS for devices whose X.org driver supports it.
-      DRM_I915_KMS y
-      DRM_RADEON_KMS? y
-      # Hybrid graphics support
-      VGA_SWITCHEROO y
-
-      # Sound.
-      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
-      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
-      SND_USB_CAIAQ_INPUT y
-      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
-
-      # USB serial devices.
-      USB_SERIAL_GENERIC y # USB Generic Serial Driver
-      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
-      USB_SERIAL_KEYSPAN_USA28 y
-      USB_SERIAL_KEYSPAN_USA28X y
-      USB_SERIAL_KEYSPAN_USA28XA y
-      USB_SERIAL_KEYSPAN_USA28XB y
-      USB_SERIAL_KEYSPAN_USA19 y
-      USB_SERIAL_KEYSPAN_USA18X y
-      USB_SERIAL_KEYSPAN_USA19W y
-      USB_SERIAL_KEYSPAN_USA19QW y
-      USB_SERIAL_KEYSPAN_USA19QI y
-      USB_SERIAL_KEYSPAN_USA49W y
-      USB_SERIAL_KEYSPAN_USA49WLC y
-
-      # Filesystem options - in particular, enable extended attributes and
-      # ACLs for all filesystems that support them.
-      EXT2_FS_XATTR y # Ext2 extended attributes
-      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
-      EXT2_FS_SECURITY y # Ext2 Security Labels
-      EXT2_FS_XIP y # Ext2 execute in place support
-      EXT4_FS_POSIX_ACL y
-      EXT4_FS_SECURITY y
-      REISERFS_FS_XATTR y
-      REISERFS_FS_POSIX_ACL y
-      REISERFS_FS_SECURITY y
-      JFS_POSIX_ACL y
-      JFS_SECURITY y
-      XFS_QUOTA y
-      XFS_POSIX_ACL y
-      XFS_RT y # XFS Realtime subvolume support
-      OCFS2_DEBUG_MASKLOG n
-      BTRFS_FS_POSIX_ACL y
-      UBIFS_FS_XATTR? y
-      UBIFS_FS_ADVANCED_COMPR y
-      NFSD_V2_ACL y
-      NFSD_V3 y
-      NFSD_V3_ACL y
-      NFSD_V4 y
-      NFS_FSCACHE y
-      CIFS_XATTR y
-      CIFS_POSIX y
-      CIFS_FSCACHE y
-
-      # Security related features.
-      STRICT_DEVMEM y # Filter access to /dev/mem
-      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
-
-      # Misc. options.
-      8139TOO_8129 y
-      8139TOO_PIO n # PIO is slower
-      AIC79XX_DEBUG_ENABLE n
-      AIC7XXX_DEBUG_ENABLE n
-      AIC94XX_DEBUG n
-      AUDIT_LOGINUID_IMMUTABLE y
-      B43_PCMCIA y
-      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
-      BLK_DEV_IDEACPI y # IDE ACPI support
-      BLK_DEV_INTEGRITY y
-      BSD_PROCESS_ACCT_V3 y
-      BT_HCIUART_BCSP y
-      BT_HCIUART_H4 y # UART (H4) protocol support
-      BT_HCIUART_LL y
-      BT_RFCOMM m
-      BT_RFCOMM_TTY y # RFCOMM TTY support
-      CRASH_DUMP n
-      DMAR? n # experimental
-      DVB_DYNAMIC_MINORS? y # we use udev
-      EFI_STUB y # EFI bootloader in the bzImage itself
-      FHANDLE y # used by systemd
-      FUSION y # Fusion MPT device support
-      IDE_GD_ATAPI y # ATAPI floppy support
-      IRDA_ULTRA y # Ultra (connectionless) protocol
-      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
-      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
-      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
-      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
-      LOGO n # not needed
-      MEDIA_ATTACH? y
-      MEGARAID_NEWGEN y
-      MICROCODE_AMD y
-      MODVERSIONS y
-      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
-      MTRR_SANITIZER y
-      NET_FC y # Fibre Channel driver support
-      PPP_MULTILINK y # PPP multilink support
-      REGULATOR y # Voltage and Current Regulator Support
-      RC_DEVICES y # Enable IR devices
-      SCSI_LOGGING y # SCSI logging facility
-      SERIAL_8250 y # 8250/16550 and compatible serial support
-      SLIP_COMPRESSED y # CSLIP compressed headers
-      SLIP_SMART y
-      THERMAL_HWMON y # Hardware monitoring support
-      USB_DEBUG n
-      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
-      USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
-      X86_CHECK_BIOS_CORRUPTION y
-      X86_MCE y
-      XEN_DOM0 y
-
-      # Linux Containers
-      RT_GROUP_SCHED? y
-      CGROUP_DEVICE? y
-      MEMCG? y
-      MEMCG_SWAP? y
-      DEVPTS_MULTIPLE_INSTANCES? y
-
-      # Enable staging drivers.  These are somewhat experimental, but
-      # they generally don't hurt.
-      STAGING y
-
-      # PROC_EVENTS requires that the netlink connector is not built
-      # as a module.  This is required by libcgroup's cgrulesengd.
-      CONNECTOR y
-      PROC_EVENTS y
-
-      # Tracing
-      FTRACE y
-      FUNCTION_TRACER y
-      FTRACE_SYSCALLS y
-      SCHED_TRACER y
-
-      # Devtmpfs support.
-      DEVTMPFS y
-
-      # Media support
-      MEDIA_CAMERA_SUPPORT? y
-      MEDIA_RC_SUPPORT? y
-      MEDIA_USB_SUPPORT y
-
-      # Easier debug of NFS issues
-      SUNRPC_DEBUG y
-
-      # Enable the 9P cache to speed up NixOS VM tests.
-      9P_FSCACHE y
-      9P_FS_POSIX_ACL y
-
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
-in
-
-import ./generic.nix (
-
-  rec {
-    version = "3.9.10";
-    testing = false;
-
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "1c187jmdkz6nqfgf4sz9f4da6wzbn2mf99qcjr56nz8sr2zmk2wv";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-    features.efiBootStub = true;
-    features.needsCifsUtils = true;
-    features.canDisableNetfilterConntrackHelpers = true;
-    features.netfilterRPFilter = true;
-
-    extraNativeBuildInputs = [bc];
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+{ stdenv, fetchurl, ... } @ args:
+
+import ./generic.nix (args // rec {
+  version = "3.9.11";
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
+    sha256 = "0d5j7kg1ifzwipicbi4g26plzbzn1rlvgj1hs4zip6sxj8ifbffl";
+  };
+
+  features.iwlwifi = true;
+  features.efiBootStub = true;
+  features.needsCifsUtils = true;
+  features.canDisableNetfilterConntrackHelpers = true;
+  features.netfilterRPFilter = true;
+})
diff --git a/pkgs/os-specific/linux/kernel/linux-rpi-3.6.nix b/pkgs/os-specific/linux/kernel/linux-rpi-3.6.nix
index cf88544abd5a9..319c2ba42b49c 100644
--- a/pkgs/os-specific/linux/kernel/linux-rpi-3.6.nix
+++ b/pkgs/os-specific/linux/kernel/linux-rpi-3.6.nix
@@ -1,44 +1,17 @@
-args @ {
-  stdenv, fetchurl, extraConfig ? "" , perl, mktemp, module_init_tools, ...
-}:
+{ stdenv, fetchurl, ... } @ args:
 
-let
-  configWithPlatform = kernelPlatform :
-    ''
-      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
-      ${extraConfig}
-    '';
+let rev = "91a3be5b2b"; in
 
-  rev = "91a3be5b2b";
-in
+import ./generic.nix (args // rec {
+  version = "3.6.y-${rev}";
 
-import ./generic.nix (
+  src = fetchurl {
+    url = "https://api.github.com/repos/raspberrypi/linux/tarball/${rev}";
+    name = "linux-raspberrypi-${version}.tar.gz";
+    sha256 = "04370b1da7610622372940decdc13ddbba2a58c9da3c3bd3e7df930a399f140d";
+  };
 
-  rec {
-    version = "3.6.y-${rev}";
-    testing = false;
+  features.iwlwifi = true;
 
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
-    src = fetchurl {
-      url = "https://api.github.com/repos/raspberrypi/linux/tarball/${rev}";
-      name = "linux-raspberrypi-${version}.tar.gz";
-      sha256 = "04370b1da7610622372940decdc13ddbba2a58c9da3c3bd3e7df930a399f140d";
-    };
-
-    config = configWithPlatform stdenv.platform;
-    configCross = configWithPlatform stdenv.cross.platform;
-
-    features.iwlwifi = true;
-    #features.efiBootStub = true;
-    #features.needsCifsUtils = true;
-    #features.canDisableNetfilterConntrackHelpers = true;
-    #features.netfilterRPFilter = true;
-
-    extraMeta.platforms = [];
-  }
-
-  // removeAttrs args ["extraConfig"]
-)
+  extraMeta.platforms = [];
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 54f4dbf72abfe..8e599a83a118c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6370,7 +6370,7 @@ let
   kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { };
 
   linux_3_0 = makeOverridable (import ../os-specific/linux/kernel/linux-3.0.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser;
     kernelPatches =
       [ kernelPatches.sec_perm_2_6_24
         # kernelPatches.aufs3_0
@@ -6378,7 +6378,7 @@ let
   };
 
   linux_3_2 = makeOverridable (import ../os-specific/linux/kernel/linux-3.2.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser;
     kernelPatches =
       [ kernelPatches.sec_perm_2_6_24
         # kernelPatches.aufs3_2
@@ -6405,7 +6405,7 @@ let
   });
 
   linux_3_4 = makeOverridable (import ../os-specific/linux/kernel/linux-3.4.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser;
     kernelPatches =
       [ kernelPatches.sec_perm_2_6_24
         # kernelPatches.aufs3_4
@@ -6424,11 +6424,11 @@ let
   });
 
   linux_3_6_rpi = makeOverridable (import ../os-specific/linux/kernel/linux-rpi-3.6.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser;
   };
 
   linux_3_8 = makeOverridable (import ../os-specific/linux/kernel/linux-3.8.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    inherit fetchurl stdenv perl mktemp bc module_init_tools ubootChooser;
     kernelPatches =
       [
         kernelPatches.sec_perm_2_6_24