summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-05-22 12:01:24 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-05-22 12:01:24 +0000
commit0aea0db581e84c11556d0ee5c473848f343cc6bb (patch)
tree51e5ff877032544013d1aa8634f6d5d80c72f656 /pkgs/os-specific
parentc741baeb4e1743aee549676fd4a357eb33b3737b (diff)
downloadnixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar.gz
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar.bz2
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar.lz
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar.xz
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.tar.zst
nixpkgs-0aea0db581e84c11556d0ee5c473848f343cc6bb.zip
* Put all packages that depend on a specific kernel (notably kernel
  modules) together in an attribute set returned by the function
  "kernelPackagesFor" that takes a kernel as argument.  For instance,
  kernelPackages_2_6_23 is the result of calling this function with
  kernel_2_6_23.

  This is necessary in NixOS to make it easier to override the kernel:
  it's not enough to just specify a different kernel (via the
  boot.kernel option), but you also need matching nvidiaDriver, aufs,
  iwlwifi, etc.  Having a single attribute set that contains all
  kernel-related packages makes this much easier.

* The kernel now has a passthru attribute "features" that allows NixOS
  expressions to test whether a kernel has certain features.  For
  instance, the externel "iwlwifi" kernel module package should only
  be built on kernels < 2.6.24, as kernels >= 2.6.24 have iwlwifi
  support integrated.  So the NixOS expressions can do the test
  "kernel.features ? iwlwifi" to see if the iwlwifi package should be
  built.

  Kernel patches can declare additional features.  E.g., the fbsplash
  patch adds a "fbSplash" feature.

svn path=/nixpkgs/trunk/; revision=11881
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/aufs/default.nix2
-rw-r--r--pkgs/os-specific/linux/iwlwifi/default.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.23.nix7
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.25.nix13
-rw-r--r--pkgs/os-specific/linux/klibc/shrunk.nix2
-rw-r--r--pkgs/os-specific/linux/nvidia/default.nix2
-rw-r--r--pkgs/os-specific/linux/wis-go7007/default.nix2
7 files changed, 27 insertions, 7 deletions
diff --git a/pkgs/os-specific/linux/aufs/default.nix b/pkgs/os-specific/linux/aufs/default.nix
index 1668f300fa8..e8361a7265d 100644
--- a/pkgs/os-specific/linux/aufs/default.nix
+++ b/pkgs/os-specific/linux/aufs/default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, kernel}:
 
 stdenv.mkDerivation {
-  name = "aufs-20080508";
+  name = "aufs-20080508-${kernel.version}";
 
   src = fetchurl {
     url = http://nixos.org/tarballs/aufs-20080508.tar.bz2;
diff --git a/pkgs/os-specific/linux/iwlwifi/default.nix b/pkgs/os-specific/linux/iwlwifi/default.nix
index ed551e9bd45..c993886c21d 100644
--- a/pkgs/os-specific/linux/iwlwifi/default.nix
+++ b/pkgs/os-specific/linux/iwlwifi/default.nix
@@ -1,10 +1,12 @@
 {stdenv, fetchurl, kernel}:
 
+let version = "1.2.25"; in
+
 stdenv.mkDerivation rec {
-  name = "iwlwifi-1.2.25";
+  name = "iwlwifi-${version}-${kernel.version}";
 
   src = fetchurl {
-    url = "http://www.intellinuxwireless.org/iwlwifi/downloads/${name}.tgz";
+    url = "http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-${version}.tgz";
     sha256 = "09fjy0swcyd77fdp8x2825wj5cd73hwbzl8mz9sy2ha21p1qwq1d";
   };
 
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.23.nix b/pkgs/os-specific/linux/kernel/linux-2.6.23.nix
index b58fb41601e..b6756c113dd 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.23.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.23.nix
@@ -34,6 +34,13 @@ in
 
 stdenv.mkDerivation {
   name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}";
+
+  passthru = {
+    inherit version;
+    # Combine the `features' attribute sets of all the kernel patches.
+    features = lib.fold (x: y: (if x ? features then x.features else {}) // y) {} kernelPatches;
+  };
+  
   builder = ./builder.sh;
   
   src = fetchurl {
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.25.nix b/pkgs/os-specific/linux/kernel/linux-2.6.25.nix
index ad1b0cc2797..5de1e141901 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.25.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.25.nix
@@ -26,14 +26,25 @@ assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
 
 let
 
-  lib = import ../../../lib;
+  lib = stdenv.lib;
 
   version = "2.6.25.4";
 
+  baseFeatures = {
+    iwlwifi = true;
+  };
+
 in
 
 stdenv.mkDerivation {
   name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}";
+
+  passthru = {
+    inherit version;
+    # Combine the `features' attribute sets of all the kernel patches.
+    features = lib.fold (x: y: (if x ? features then x.features else {}) // y) baseFeatures kernelPatches;
+  };
+  
   builder = ./builder.sh;
   
   src = fetchurl {
diff --git a/pkgs/os-specific/linux/klibc/shrunk.nix b/pkgs/os-specific/linux/klibc/shrunk.nix
index 828e4691623..f45067565ab 100644
--- a/pkgs/os-specific/linux/klibc/shrunk.nix
+++ b/pkgs/os-specific/linux/klibc/shrunk.nix
@@ -1,7 +1,7 @@
 {stdenv, klibc}:
 
 stdenv.mkDerivation {
-  name = "${klibc.name}";
+  name = "${klibc.name}-shrunk";
   buildCommand = ''
     ensureDir $out/lib
     cp -prd ${klibc}/lib/klibc/bin $out/
diff --git a/pkgs/os-specific/linux/nvidia/default.nix b/pkgs/os-specific/linux/nvidia/default.nix
index bbd9acb15d2..7b414600ccb 100644
--- a/pkgs/os-specific/linux/nvidia/default.nix
+++ b/pkgs/os-specific/linux/nvidia/default.nix
@@ -7,7 +7,7 @@ let
 in
 
 stdenv.mkDerivation {
-  name = "nvidiaDrivers-" + versionNumber;
+  name = "nvidiaDrivers-${versionNumber}-${kernel.version}";
   builder = ./builder.sh;
   
   src = fetchurl {
diff --git a/pkgs/os-specific/linux/wis-go7007/default.nix b/pkgs/os-specific/linux/wis-go7007/default.nix
index 3e35c83488a..0fa939c20c6 100644
--- a/pkgs/os-specific/linux/wis-go7007/default.nix
+++ b/pkgs/os-specific/linux/wis-go7007/default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, kernel, ncurses, fxload}:
 
 stdenv.mkDerivation {
-  name = "wis-go7007-0.9.8";
+  name = "wis-go7007-0.9.8-${kernel.version}";
 
   src = fetchurl {
     url = http://gentoo.osuosl.org/distfiles/wis-go7007-linux-0.9.8.tar.bz2;