about summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/firmware/ipw2100/default.nix25
-rw-r--r--pkgs/os-specific/linux/hal/default.nix5
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.36.nix207
-rw-r--r--pkgs/os-specific/linux/qemu-kvm/default.nix6
-rw-r--r--pkgs/os-specific/linux/qemu-kvm/unix-domain.patch175
5 files changed, 238 insertions, 180 deletions
diff --git a/pkgs/os-specific/linux/firmware/ipw2100/default.nix b/pkgs/os-specific/linux/firmware/ipw2100/default.nix
new file mode 100644
index 000000000000..2ffa8c3e8375
--- /dev/null
+++ b/pkgs/os-specific/linux/firmware/ipw2100/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation {
+  name = "ipw2100-fw-1.3";
+  src = fetchurl {
+    url = http://bughost.org/firmware/ipw2100-fw-1.3.tgz;
+    sha256 = "18m7wgd062qwfdr6y0kjrvf1715wjcjn4yml2sk29ls8br2pq471";
+  };
+
+  unpackPhase = "tar xvzf $src";
+
+  # Installation copies the firmware AND the license.  The license
+  # says: "Your rights to redistribute the Software shall be
+  # contingent upon your installation of this Agreement in its
+  # entirety in the same directory as the Software."
+  installPhase = "ensureDir $out; cp * $out";
+  
+  meta = {
+    # "... you may transfer a copy of the Software ... provided such
+    # recipient agrees to be fully bound by the terms hereof."
+    description = "Firmware for the Intel 2100BG wireless card (requires acceptance of license, see http://ipw2100.sourceforge.net/firmware.php?fid=2)";
+    homepage = http://ipw2100.sourceforge.net/firmware.php;
+    license = http://ipw2100.sourceforge.net/firmware.php?fid=2;
+  };
+}
diff --git a/pkgs/os-specific/linux/hal/default.nix b/pkgs/os-specific/linux/hal/default.nix
index 45a3efbfce53..718d54f3106e 100644
--- a/pkgs/os-specific/linux/hal/default.nix
+++ b/pkgs/os-specific/linux/hal/default.nix
@@ -2,7 +2,7 @@
 , libusb, dbus, dbus_glib, glib, libuuid, perl
 , perlXMLParser, gettext, zlib, gperf, consolekit, policykit
 , libsmbios, dmidecode, udev, utillinuxng, pmutils, usbutils
-, eject
+, eject, upstart
 }:
 
 assert stdenv ? glibc;
@@ -54,7 +54,8 @@ stdenv.mkDerivation rec {
         --replace /bin/mount ${utillinuxng}/bin/mount \
         --replace /bin/umount ${utillinuxng}/bin/umount \
         --replace /usr/bin/pm-is-supported ${pmutils}/bin/pm-is-supported \
-        --replace /usr/sbin/pm ${pmutils}/sbin/pm
+        --replace /usr/sbin/pm ${pmutils}/sbin/pm \
+        --replace /sbin/shutdown ${upstart}/sbin/shutdown
     done
   '';
 
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.36.nix b/pkgs/os-specific/linux/kernel/linux-2.6.36.nix
new file mode 100644
index 000000000000..dbc036bec372
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.36.nix
@@ -0,0 +1,207 @@
+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
+
+      # 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
+      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
+      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 {
+    version = "2.6.36";
+  
+    src = fetchurl {
+      url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2";
+      sha256 = "15a076d1a435a6bf8e92834eba4b390b4ec094ce06d47f89d071ca9e5788ce04";
+    };
+
+    config = configWithPlatform stdenv.platform;
+    configCross = configWithPlatform stdenv.cross.platform;
+
+    features.iwlwifi = true;
+  }
+
+  // removeAttrs args ["extraConfig"]
+)
diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix
index 69222d5a24d0..ef7153871fd2 100644
--- a/pkgs/os-specific/linux/qemu-kvm/default.nix
+++ b/pkgs/os-specific/linux/qemu-kvm/default.nix
@@ -3,14 +3,14 @@
 assert stdenv.isLinux;
    
 stdenv.mkDerivation rec {
-  name = "qemu-kvm-0.12.5";
+  name = "qemu-kvm-0.13.0";
    
   src = fetchurl {
     url = "mirror://sourceforge/kvm/${name}.tar.gz";
-    sha256 = "0gsqmws24s96g1h0z2m8r28pyv08wnzh5jip925ym167rfp8bh14";
+    sha256 = "0lxym4p2bvqcb37h3wbjd81w4jrj4dn5kivdxcpx27iwgq6n1ckd";
   };
 
-  patches = [ ./unix-domain.patch ./smb-tmpdir.patch ];
+  patches = [ ./smb-tmpdir.patch ];
 
   buildInputs = [ zlib SDL alsaLib pkgconfig pciutils libuuid ];
 
diff --git a/pkgs/os-specific/linux/qemu-kvm/unix-domain.patch b/pkgs/os-specific/linux/qemu-kvm/unix-domain.patch
deleted file mode 100644
index 86815a06cd21..000000000000
--- a/pkgs/os-specific/linux/qemu-kvm/unix-domain.patch
+++ /dev/null
@@ -1,175 +0,0 @@
-diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/socket.c qemu-kvm-0.12.1.2/slirp/socket.c
-*** qemu-kvm-0.12.1.2-orig/slirp/socket.c	2009-12-29 21:46:34.000000000 +0100
---- qemu-kvm-0.12.1.2/slirp/socket.c	2010-01-03 20:24:11.000000000 +0100
-***************
-*** 588,593 ****
---- 588,594 ----
-             u_int lport, int flags)
-  {
-  	struct sockaddr_in addr;
-+ 	struct sockaddr_un addr_un;
-  	struct socket *so;
-  	int s, opt = 1;
-  	socklen_t addrlen = sizeof(addr);
-***************
-*** 622,634 ****
-  	so->so_lport = lport; /* Kept in network format */
-  	so->so_laddr.s_addr = laddr; /* Ditto */
-  
-! 	addr.sin_family = AF_INET;
-! 	addr.sin_addr.s_addr = haddr;
-! 	addr.sin_port = hport;
-  
-! 	if (((s = qemu_socket(AF_INET,SOCK_STREAM,0)) < 0) ||
-  	    (setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 0) ||
-! 	    (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) ||
-  	    (listen(s,1) < 0)) {
-  		int tmperrno = errno; /* Don't clobber the real reason we failed */
-  
---- 623,644 ----
-  	so->so_lport = lport; /* Kept in network format */
-  	so->so_laddr.s_addr = laddr; /* Ditto */
-  
-! 	so->so_uds = ntohs(hport) >= 0xff00;
-! 	
-! 	if (so->so_uds) {
-! 	    addr_un.sun_family = AF_UNIX;
-! 	    sprintf(addr_un.sun_path, "./%d.socket", ntohs(hport));
-! 	    unlink(addr_un.sun_path);
-! 	} else {
-! 	    addr.sin_family = AF_INET;
-! 	    addr.sin_addr.s_addr = haddr;
-! 	    addr.sin_port = hport;
-! 	}
-  
-!  	if (((s = qemu_socket(so->so_uds ? PF_UNIX : AF_INET, SOCK_STREAM, 0)) < 0) ||
-  	    (setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 0) ||
-! 	    (bind(s, so->so_uds ? (struct sockaddr *) &addr_un : (struct sockaddr *) &addr,
-! 		so->so_uds ? sizeof(addr_un) : sizeof(addr)) < 0) ||
-  	    (listen(s,1) < 0)) {
-  		int tmperrno = errno; /* Don't clobber the real reason we failed */
-  
-***************
-*** 644,655 ****
-  	}
-  	setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
-  
-! 	getsockname(s,(struct sockaddr *)&addr,&addrlen);
-! 	so->so_fport = addr.sin_port;
-! 	if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
-! 	   so->so_faddr = slirp->vhost_addr;
-! 	else
-! 	   so->so_faddr = addr.sin_addr;
-  
-  	so->s = s;
-  	return so;
---- 654,670 ----
-  	}
-  	setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
-  
-!         if (so->so_uds) {
-!             so->so_fport = hport;
-!             so->so_faddr = slirp->vhost_addr;
-!         } else {
-!             getsockname(s,(struct sockaddr *)&addr,&addrlen);
-!             so->so_fport = addr.sin_port;
-!             if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
-!                 so->so_faddr = slirp->vhost_addr;
-!             else
-!                 so->so_faddr = addr.sin_addr;
-!         }
-  
-  	so->s = s;
-  	return so;
-diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/socket.h qemu-kvm-0.12.1.2/slirp/socket.h
-*** qemu-kvm-0.12.1.2-orig/slirp/socket.h	2009-12-29 21:46:34.000000000 +0100
---- qemu-kvm-0.12.1.2/slirp/socket.h	2010-01-03 20:20:50.000000000 +0100
-***************
-*** 33,39 ****
-    struct in_addr so_laddr;	   /* local host table entry */
-    u_int16_t so_fport;		   /* foreign port */
-    u_int16_t so_lport;		   /* local port */
-! 
-    u_int8_t	so_iptos;	/* Type of service */
-    u_int8_t	so_emu;		/* Is the socket emulated? */
-  
---- 33,40 ----
-    struct in_addr so_laddr;	   /* local host table entry */
-    u_int16_t so_fport;		   /* foreign port */
-    u_int16_t so_lport;		   /* local port */
-!   int so_uds;                      /* foreign "port" is a unix domain socket */
-!     
-    u_int8_t	so_iptos;	/* Type of service */
-    u_int8_t	so_emu;		/* Is the socket emulated? */
-  
-diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/tcp_subr.c qemu-kvm-0.12.1.2/slirp/tcp_subr.c
-*** qemu-kvm-0.12.1.2-orig/slirp/tcp_subr.c	2009-12-29 21:46:34.000000000 +0100
---- qemu-kvm-0.12.1.2/slirp/tcp_subr.c	2010-01-03 20:20:50.000000000 +0100
-***************
-*** 383,389 ****
-  	Slirp *slirp = inso->slirp;
-  	struct socket *so;
-  	struct sockaddr_in addr;
-! 	socklen_t addrlen = sizeof(struct sockaddr_in);
-  	struct tcpcb *tp;
-  	int s, opt;
-  
---- 383,390 ----
-  	Slirp *slirp = inso->slirp;
-  	struct socket *so;
-  	struct sockaddr_in addr;
-! 	struct sockaddr_un addr_un;
-! 	socklen_t addrlen;
-  	struct tcpcb *tp;
-  	int s, opt;
-  
-***************
-*** 413,419 ****
-  
-  	(void) tcp_mss(sototcpcb(so), 0);
-  
-! 	if ((s = accept(inso->s,(struct sockaddr *)&addr,&addrlen)) < 0) {
-  		tcp_close(sototcpcb(so)); /* This will sofree() as well */
-  		return;
-  	}
---- 414,423 ----
-  
-  	(void) tcp_mss(sototcpcb(so), 0);
-  
-!         addrlen = inso->so_uds ? sizeof(struct sockaddr_un) : sizeof(struct sockaddr_in);
-! 
-! 	if ((inso->so_uds && (s = accept(inso->s, (struct sockaddr *) &addr_un, &addrlen)) < 0) ||
-!             (!inso->so_uds && (s = accept(inso->s, (struct sockaddr *) &addr, &addrlen)) < 0)) {
-  		tcp_close(sototcpcb(so)); /* This will sofree() as well */
-  		return;
-  	}
-***************
-*** 425,435 ****
-  	opt = 1;
-  	setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
-  
-! 	so->so_fport = addr.sin_port;
-! 	so->so_faddr = addr.sin_addr;
-! 	/* Translate connections from localhost to the real hostname */
-! 	if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == loopback_addr.s_addr)
-! 	   so->so_faddr = slirp->vhost_addr;
-  
-  	/* Close the accept() socket, set right state */
-  	if (inso->so_state & SS_FACCEPTONCE) {
---- 429,444 ----
-  	opt = 1;
-  	setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
-  
-!         if (inso->so_uds) {
-!             so->so_fport = htons(s); /* use the fd number as the foreign port */
-!             so->so_faddr = slirp->vhost_addr;
-!         } else {
-!             so->so_fport = addr.sin_port;
-!             so->so_faddr = addr.sin_addr;
-!             /* Translate connections from localhost to the real hostname */
-!             if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == loopback_addr.s_addr)
-!                 so->so_faddr = slirp->vhost_addr;
-!         }
-  
-  	/* Close the accept() socket, set right state */
-  	if (inso->so_state & SS_FACCEPTONCE) {