about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/default.nix17
-rw-r--r--machines/dnyarri.nix15
-rw-r--r--machines/mmrnmhrm.nix14
3 files changed, 21 insertions, 25 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);
+}
diff --git a/machines/dnyarri.nix b/machines/dnyarri.nix
index 3a3801a2..0c9f3bac 100644
--- a/machines/dnyarri.nix
+++ b/machines/dnyarri.nix
@@ -1,6 +1,7 @@
 {config, pkgs, ...}:
 
 with pkgs.lib;
+with import ../lib;
 
 {
   require = singleton ../common.nix;
@@ -43,19 +44,7 @@ with pkgs.lib;
       src = pkgs.kernelSourceAszlig.src;
       configfile = pkgs.substituteAll {
         name = "aszlig-with-firmware.kconf";
-
-        # XXX: in mmrnmhrm.nix as well, factor out!
-        src = 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 ./dnyarri-kconf.nix));
+        src = generateKConf (import ./dnyarri-kconf.nix);
 
         builtin_firmware = pkgs.stdenv.mkDerivation {
           name = "builtin-firmware";
diff --git a/machines/mmrnmhrm.nix b/machines/mmrnmhrm.nix
index ad875fd3..259d7c98 100644
--- a/machines/mmrnmhrm.nix
+++ b/machines/mmrnmhrm.nix
@@ -1,6 +1,7 @@
 {config, pkgs, ...}:
 
 with pkgs.lib;
+with import ../lib;
 
 {
   require = singleton ../common.nix;
@@ -10,18 +11,7 @@ with pkgs.lib;
       version = pkgs.kernelSourceAszlig.version;
       src = pkgs.kernelSourceAszlig.src;
 
-      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));
-
+      configfile = generateKConf (import ./mmrnmhrm-kconf.nix);
       allowImportFromDerivation = true;
     };
   in rec {