about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/os-specific/linux/microcode/converter.nix29
-rw-r--r--pkgs/os-specific/linux/microcode/intel.nix14
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 38 insertions, 7 deletions
diff --git a/pkgs/os-specific/linux/microcode/converter.nix b/pkgs/os-specific/linux/microcode/converter.nix
new file mode 100644
index 000000000000..ea00c7a6ae42
--- /dev/null
+++ b/pkgs/os-specific/linux/microcode/converter.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "microcode2ucode-20120205";
+  src = fetchurl {
+    url = "http://gentoo-overlays.zugaina.org/gentoo/portage/sys-apps/microcode-data/files/intel-microcode2ucode.c";
+    sha256 = "c51b1b1d8b4b28e7d5d007917c1e444af1a2ff04a9408aa9067c0e57d70164de";
+  };
+
+  sourceRoot = ".";
+
+  unpackPhase = ''
+    # nothing to unpack
+  '';
+
+  buildPhase = ''
+    gcc -Wall -O2 $src -o intel-microcode2ucode
+  '';
+  
+  installPhase = ''
+    ensureDir "$out/bin"
+    cp intel-microcode2ucode "$out/bin/"
+  '';
+
+  meta = {
+    homepage = http://www.intel.com;
+    description = "Microcode converter for Intel .dat files";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/os-specific/linux/microcode/intel.nix b/pkgs/os-specific/linux/microcode/intel.nix
index 3294c90cb3a0..9a57fef67a1b 100644
--- a/pkgs/os-specific/linux/microcode/intel.nix
+++ b/pkgs/os-specific/linux/microcode/intel.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, microcode2ucode }:
 
 let version = "20111110";
     num = "20728";
@@ -9,16 +9,16 @@ in stdenv.mkDerivation {
     sha256 = "16f532cdf9cce03e01e714619ad9406a465aa965bbd1288035398db79921cbc1";
   };
 
-#  setSourceRoot = ''
-#    sourceRoot=.
-#  '';
-
+  buildInputs = [ microcode2ucode ];
   sourceRoot = ".";
 
-  dontBuild = true;
+  buildPhase = ''
+    intel-microcode2ucode microcode.dat
+  '';
+
   installPhase = ''
     ensureDir $out
-    cp microcode.dat "$out/"
+    cp -r intel-ucode "$out/"
   '';
 
   meta = {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 848c1ac4dd9f..59030cddcf3e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5273,6 +5273,8 @@ let
 
   alsaUtils = callPackage ../os-specific/linux/alsa-utils { };
 
+  microcode2ucode = callPackage ../os-specific/linux/microcode/converter.nix { };
+
   microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { };
 
   bcm43xx = callPackage ../os-specific/linux/firmware/bcm43xx { };