diff options
author | aszlig <aszlig@redmoonstudios.org> | 2013-01-28 22:34:41 +0100 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2013-02-07 06:43:51 +0100 |
commit | 62c141c00631f31eec30448b14658dea513899c5 (patch) | |
tree | cea042891e8d36f669f800e72d8b73290faff01b /lib/default.nix | |
parent | 4fef01ea063354f095f5583c5d1fcedc967d9e87 (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/default.nix')
-rw-r--r-- | lib/default.nix | 17 |
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); +} |