about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2013-01-28 22:34:41 +0100
committeraszlig <aszlig@redmoonstudios.org>2013-02-07 06:43:51 +0100
commit62c141c00631f31eec30448b14658dea513899c5 (patch)
treecea042891e8d36f669f800e72d8b73290faff01b /lib
parent4fef01ea063354f095f5583c5d1fcedc967d9e87 (diff)
Factor out kconf generator into lib/default.nix.
This should get rid of the duplication already marked with XXX and of course
should make the machine-specific configuration way easier to read.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/default.nix b/lib/default.nix
new file mode 100644
index 00000000..95f4f39f
--- /dev/null
+++ b/lib/default.nix
@@ -0,0 +1,17 @@
+with import <nixpkgs> {};
+
+with pkgs.lib;
+
+{
+  generateKConf = exprs: 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 "generated.kconf" (mkConf exprs);
+}