about summary refs log tree commit diff
path: root/machines/mmrnmhrm.nix
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2012-12-13 22:18:16 +0100
committeraszlig <aszlig@redmoonstudios.org>2012-12-13 22:18:16 +0100
commit7e62e31f9f2bba0864ee8dd05b490c17387f5322 (patch)
treef16b6eab1ab6ace8c6905bcdf3d2dc1ae8230cdf /machines/mmrnmhrm.nix
parentb4d02daa490be2aaf4464ced4883a4121c577e66 (diff)
mmrnmhrm: Add kernel configuration as an attrset.
So, this is the first step towards enhancing manual kernel configuration. Of
course. this still looks a bit ugly because I personally don't like
all-uppercase variable names for the kernel config and it still needs to have a
few more expressions to properly handle value types (y/n/m, int, hex, string).

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'machines/mmrnmhrm.nix')
-rw-r--r--machines/mmrnmhrm.nix22
1 files changed, 15 insertions, 7 deletions
diff --git a/machines/mmrnmhrm.nix b/machines/mmrnmhrm.nix
index a765918e..2e986f55 100644
--- a/machines/mmrnmhrm.nix
+++ b/machines/mmrnmhrm.nix
@@ -1,4 +1,4 @@
-{config, pkgs, ...}:
+{ config, pkgs, ... }:
 
 with pkgs.lib;
 
@@ -9,12 +9,20 @@ with pkgs.lib;
     linuxAszlig = pkgs.linuxManualConfig {
       version = pkgs.kernelSourceAszlig.version;
       src = pkgs.kernelSourceAszlig.src;
-      configfile = pkgs.fetchurl {
-        name = "aszlig.kconf";
-        url = "file:///home/aszlig/linux/.config";
-        md5 = "0c632194689797846127b47fa135c516";
-      };
-      allowImportFromDerivation = true; # XXX
+
+      configfile = let
+        isNumber = c: elem c ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"];
+        mkValue = val:
+          if val == "" then "\"\""
+          else if val == "y" || val == "m" || val == "n" then val
+          else if all isNumber (stringToCharacters val) then val
+          else if substring 0 2 val == "0x" then val
+          else "\"${val}\"";
+        mkConfigLine = key: val: "${key}=${mkValue val}";
+        mkConf = cfg: concatStringsSep "\n" (mapAttrsToList mkConfigLine cfg);
+      in pkgs.writeText "aszlig.kconf" (mkConf (import ./mmrnmhrm-kconf.nix));
+
+      allowImportFromDerivation = true;
     };
   in rec {
     kernelPackages = pkgs.linuxPackagesFor linuxAszlig kernelPackages;