summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix5
-rw-r--r--lib/lua.nix32
2 files changed, 37 insertions, 0 deletions
diff --git a/lib/default.nix b/lib/default.nix
new file mode 100644
index 0000000..574a348
--- /dev/null
+++ b/lib/default.nix
@@ -0,0 +1,5 @@
+{...} @ inputs: let
+ callLibs = file: import file inputs;
+in {
+ lua = callLibs ./lua.nix;
+}
diff --git a/lib/lua.nix b/lib/lua.nix
new file mode 100644
index 0000000..704cdfa
--- /dev/null
+++ b/lib/lua.nix
@@ -0,0 +1,32 @@
+{lib, ...}: let
+ fmt = val:
+ # nil
+ if val == null
+ then "nil"
+ # boolean
+ else if builtins.isBool val
+ then
+ if val
+ then "true"
+ else "false"
+ # number
+ else if builtins.isInt val || builtins.isFloat val
+ then toString val
+ # string
+ else if builtins.isString val
+ then "'${val}'"
+ # table (array)
+ else if builtins.isList val
+ then "{ " + (lib.concatStringsSep ", " (map fmt val)) + " }"
+ # table (object)
+ else if builtins.isAttrs val
+ then
+ "{ "
+ + (lib.concatStringsSep ", "
+ (lib.mapAttrsToList (k: v: "${k} = ${fmt v}") val))
+ + " }"
+ # invalid
+ else throw "Unsupported value: ${toString val}";
+in {
+ fmt = fmt;
+}