Index: pkgs/os-specific/linux/broadcom-sta/default.nix
===================================================================
--- pkgs/os-specific/linux/broadcom-sta/default.nix	(revision 0)
+++ pkgs/os-specific/linux/broadcom-sta/default.nix	(revision 0)
@@ -0,0 +1,44 @@
+# Activate in NixOS by adding boot.extraModulePackages = [ pkgs.linuxPackages.broadcom_sta ]
+
+{ stdenv, fetchurl, kernel }:
+
+let version = "5.60.246.2";
+    bits = if stdenv.system == "i686-linux" then "32" else
+      assert stdenv.system == "x86_64-linux"; "64";
+in
+
+stdenv.mkDerivation {
+  name = "broadcom-sta-${version}";
+  src = fetchurl {
+    url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86-${bits}_v${version}.tar.gz";
+    sha256 = if bits == "32"
+      then "0mrq32yjf2j56ski3cd7k1irmxpivs9d86d2p9qkz4xm92zphc7w"
+      else "1shw72nfmiqmb5b5g2i4phxqj9cdyaxkbcz4yxbdj0k4waba1jb4";
+  };
+
+  buildInputs = [ kernel ];
+  patches = [ ./makefile.patch ];
+
+  makeFlags = "KDIR=${kernel}/lib/modules/${kernel.version}/build";
+
+  unpackPhase =
+    ''
+      sourceRoot=broadcom-sta
+      mkdir "$sourceRoot"
+      tar xvf "$src" -C "$sourceRoot"
+    '';
+
+  installPhase =
+    ''
+      outDir="$out/lib/modules/${kernel.version}/kernel/net/wireless"
+      ensureDir "$outDir"
+      cp wl.ko "$outDir"
+    '';
+
+  meta = {
+    description = "Kernel module driver for some Broadcom's wireless cards";
+    homepage = http://www.broadcom.com/support/802.11/linux_sta.php;
+    maintainers = [ stdenv.lib.maintainers.neznalek ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
Index: pkgs/os-specific/linux/broadcom-sta/makefile.patch
===================================================================
--- pkgs/os-specific/linux/broadcom-sta/makefile.patch	(revision 0)
+++ pkgs/os-specific/linux/broadcom-sta/makefile.patch	(revision 0)
@@ -0,0 +1,16 @@
+--- src/Makefile	2010-10-08 00:32:59.000000000 +0200
++++ src/Makefile	2010-11-09 11:06:28.832999850 +0100
+@@ -27,10 +27,10 @@
+ EXTRA_LDFLAGS      := $(src)/lib/wlc_hybrid.o_shipped
+ 
+ all:
+-	KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
++	KBUILD_NOPEDANTIC=1 make -C ${KDIR} M=`pwd`
+ 
+ clean:
+-	KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` clean
++	KBUILD_NOPEDANTIC=1 make -C ${KDIR} clean
+ 
+ install:
+-	install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/wl.ko
++	install -D -m 755 wl.ko $out/lib/modules/${kernelVersion}/kernel/drivers/net/wireless/wl.ko
Index: pkgs/lib/maintainers.nix
===================================================================
--- pkgs/lib/maintainers.nix	(revision 24888)
+++ pkgs/lib/maintainers.nix	(working copy)
@@ -13,6 +13,7 @@
   kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
   ludo = "Ludovic Courtès <ludo@gnu.org>";
   marcweber = "Marc Weber <marco-oweber@gmx.de>";
+  neznalek = "Vladimír Čunát <vcunat@gmail.com>";
   phreedom = "Evgeny Egorochkin <phreedom.stdin@gmail.com>";
   pierron = "Nicolas B. Pierron <nixos@nbp.name>";
   raskin = "Michael Raskin <7c6f434c@mail.ru>";
Index: pkgs/top-level/all-packages.nix
===================================================================
--- pkgs/top-level/all-packages.nix	(revision 24888)
+++ pkgs/top-level/all-packages.nix	(working copy)
@@ -4781,6 +4781,8 @@
        else iwlwifi4965ucodeV1);
 
     atheros = callPackage ../os-specific/linux/atheros/0.9.4.nix { };
+    
+    broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix { };
 
     nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { };
 
