diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index 96268577696..f2cf894b863 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -12,15 +12,19 @@ # `contents = {object = ...; symlink = /init;}' is a typical # argument. -{stdenv, perl, cpio, contents, platform}: +{stdenv, perl, cpio, contents, ubootChooser}: +let + inputsFun = ubootName : [perl cpio] + ++ stdenv.lib.optional (ubootName != null) [ ubootChooser ubootName ]; + makeUInitrdFun = ubootName : (ubootName != null); +in stdenv.mkDerivation { name = "initrd"; builder = ./make-initrd.sh; - buildInputs = [perl cpio] - ++ stdenv.lib.optional (platform.uboot != null) [ platform.uboot ]; + buildNativeInputs = inputsFun stdenv.platform.uboot; - makeUInitrd = if (platform.uboot != null) then true else false; + makeUInitrd = makeUInitrdFun stdenv.platform.uboot; # !!! should use XML. objects = map (x: x.object) contents; @@ -31,4 +35,9 @@ stdenv.mkDerivation { exportReferencesGraph = map (x: [("closure-" + baseNameOf x.symlink) x.object]) contents; pathsFromGraph = ./paths-from-graph.pl; + + crossAttrs = { + buildNativeInputs = inputsFun stdenv.cross.platform.uboot; + makeUInitrd = makeUInitrdFun stdenv.cross.platform.uboot; + }; } diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix index 30d2d370053..062c5256399 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix @@ -1,6 +1,201 @@ -args @ { stdenv, fetchurl, platform, userModeLinux ? false, extraConfig ? "" +args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "" , ... }: +let + configWithPlatform = kernelPlatform : + '' + # Don't include any debug features. + DEBUG_KERNEL 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 + + # 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 + IWLWIFI_LEDS? y + IWLWIFI_SPECTRUM_MEASUREMENT y + IWL3945_SPECTRUM_MEASUREMENT y + IWL4965 y # Intel Wireless WiFi 4965AGN + IWL5000 y # Intel Wireless WiFi 5000AGN + HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver + HOSTAP_FIRMWARE_NVRAM 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 + # The intel drivers already require KMS + DRM_I915_KMS 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 + OCFS2_FS_POSIX_ACL y + 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_BSG n + 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 + CPU_FREQ_DEBUG n + CRASH_DUMP n + DMAR? n # experimental + DVB_DYNAMIC_MINORS y # we use udev + 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 + KALLSYMS_EXTRA_PASS n + 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 + PCI_LEGACY y + 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 + + ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""} + ${extraConfig} + ''; +in + import ./generic.nix ( rec { @@ -11,200 +206,16 @@ import ./generic.nix ( sha256 = "1g6hs7j5kmifb3phbnckdmrnxd0cpqrijnnbry86z26npsh9my7l"; }; + config = configWithPlatform stdenv.platform; + + platform = stdenv.platform; + + crossAttrs = { + config = configWithPlatform stdenv.cross.platform; + platform = stdenv.cross.platform; + }; + features.iwlwifi = true; - - config = - '' - # Don't include any debug features. - DEBUG_KERNEL 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 - - # 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 - IWLWIFI_LEDS? y - IWLWIFI_SPECTRUM_MEASUREMENT y - IWL3945_SPECTRUM_MEASUREMENT y - IWL4965 y # Intel Wireless WiFi 4965AGN - IWL5000 y # Intel Wireless WiFi 5000AGN - HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver - HOSTAP_FIRMWARE_NVRAM 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 - # The intel drivers already require KMS - DRM_I915_KMS 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 - OCFS2_FS_POSIX_ACL y - 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_BSG n - 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 - CPU_FREQ_DEBUG n - CRASH_DUMP n - DMAR? n # experimental - DVB_DYNAMIC_MINORS y # we use udev - 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 - KALLSYMS_EXTRA_PASS n - 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 - PCI_LEGACY y - 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 - - ${if platform ? kernelExtraConfig then platform.kernelExtraConfig else ""} - ${extraConfig} - ''; } // removeAttrs args ["extraConfig"] diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.33.nix b/pkgs/os-specific/linux/kernel/linux-2.6.33.nix index 46eb32e1ca6..050ba98f740 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.33.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.33.nix @@ -1,6 +1,199 @@ -args @ { stdenv, fetchurl, platform, userModeLinux ? false, extraConfig ? "" +args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "" , ... }: +let + configWithPlatform = kernelPlatform : + '' + # Don't include any debug features. + DEBUG_KERNEL 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 + + # 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 + IWLWIFI_SPECTRUM_MEASUREMENT y + IWL3945_SPECTRUM_MEASUREMENT y + IWL4965 y # Intel Wireless WiFi 4965AGN + IWL5000 y # Intel Wireless WiFi 5000AGN + HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver + HOSTAP_FIRMWARE_NVRAM 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 + # The intel drivers already require KMS + DRM_I915_KMS 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_BSG n + 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 + CPU_FREQ_DEBUG n + CRASH_DUMP n + DMAR? n # experimental + DVB_DYNAMIC_MINORS y # we use udev + 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 + KALLSYMS_EXTRA_PASS n + 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 + PCI_LEGACY y + 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 + + ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""} + ${extraConfig} + ''; +in + import ./generic.nix ( rec { @@ -11,198 +204,16 @@ import ./generic.nix ( sha256 = "1inmam21w13nyf5imgdb5palhiap41zcxf9k32i4ck1w7gg3gqk3"; }; + config = configWithPlatform stdenv.platform; + + platform = stdenv.platform; + + crossAttrs = { + config = configWithPlatform stdenv.cross.platform; + platform = stdenv.cross.platform; + }; + features.iwlwifi = true; - - config = - '' - # Don't include any debug features. - DEBUG_KERNEL 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 - - # 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 - IWLWIFI_SPECTRUM_MEASUREMENT y - IWL3945_SPECTRUM_MEASUREMENT y - IWL4965 y # Intel Wireless WiFi 4965AGN - IWL5000 y # Intel Wireless WiFi 5000AGN - HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver - HOSTAP_FIRMWARE_NVRAM 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 - # The intel drivers already require KMS - DRM_I915_KMS 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_BSG n - 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 - CPU_FREQ_DEBUG n - CRASH_DUMP n - DMAR? n # experimental - DVB_DYNAMIC_MINORS y # we use udev - 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 - KALLSYMS_EXTRA_PASS n - 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 - PCI_LEGACY y - 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 - - ${if platform ? kernelExtraConfig then platform.kernelExtraConfig else ""} - ${extraConfig} - ''; } // removeAttrs args ["extraConfig"] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bec3c8aeaef..f8da366d72d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35,6 +35,7 @@ config ? null , crossSystem ? null +, platform ? (import ./platforms.nix).pc }: @@ -180,7 +181,7 @@ let allPackages = args: import ./all-packages.nix ({ inherit config; } // args); }; - defaultStdenv = allStdenvs.stdenv; + defaultStdenv = allStdenvs.stdenv // { inherit platform; }; stdenvCross = makeStdenvCross defaultStdenv crossSystem (binutilsCross crossSystem) (gccCrossStageFinal crossSystem); @@ -291,7 +292,7 @@ let }; makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix { - inherit stdenv perl cpio contents platform; + inherit stdenv perl cpio contents ubootChooser; }; makeWrapper = makeSetupHook ../build-support/make-wrapper/make-wrapper.sh; @@ -326,11 +327,7 @@ let inherit pkgs lib; }; - platforms = import ./platforms.nix { - inherit system pkgs; - }; - - platform = platforms.pc; + platforms = import ./platforms.nix; ### TOOLS @@ -5845,7 +5842,8 @@ let linuxHeaders = linuxHeaders_2_6_28; linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix { - inherit stdenv fetchurl cross perl platform; + inherit stdenv fetchurl cross perl; + platform = cross.platform; }); linuxHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { @@ -5903,12 +5901,11 @@ let }; linux_2_6_32 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.32.nix) { - inherit fetchurl stdenv perl mktemp module_init_tools; + inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser; kernelPatches = [ kernelPatches.fbcondecor_2_6_31 kernelPatches.sec_perm_2_6_24 ]; - inherit platform; }; linux_2_6_32_zen4 = makeOverridable (import ../os-specific/linux/zen-kernel/2.6.32-zen4.nix) { @@ -5928,12 +5925,11 @@ let }; linux_2_6_33 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.33.nix) { - inherit fetchurl stdenv perl mktemp module_init_tools; + inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser; kernelPatches = [ kernelPatches.fbcondecor_2_6_33 kernelPatches.sec_perm_2_6_24 ]; - inherit platform; }; /* Linux kernel modules are inherently tied to a specific kernel. So @@ -6347,7 +6343,11 @@ let inherit (xlibs) libX11 xproto; };*/ - uboot = makeOverridable (import ../misc/uboot) { + ubootChooser = name : if (name == "upstream") then ubootUpstream + else if (name == "sheevaplug") then ubootSheevaplug + else throw "Unknown uboot"; + + ubootUpstream = makeOverridable (import ../misc/uboot) { inherit fetchurl stdenv unzip platform; }; diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index 9cd209a7552..4b1fb315287 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -1,7 +1,5 @@ -{ system, pkgs}: -with pkgs; rec { - pc = assert system == "i686-linux" || system == "x86_64-linux"; { + pc = { name = "pc"; uboot = null; kernelBaseConfig = "defconfig"; @@ -60,7 +58,7 @@ rec { IP_PNP y ''; kernelTarget = "uImage"; - uboot = ubootSheevaplug; + uboot = "sheevaplug"; # Only for uboot = uboot : ubootConfig = "sheevaplug_config"; }; @@ -133,7 +131,7 @@ rec { integratorCPuboot = integratorCP // { name = "integratorCPuboot"; kernelTarget = "uImage"; - uboot = uboot; + uboot = "upstream"; ubootConfig = "integratorcp_config"; }; }