From 43760a34e578cd93480a27c9513eb9e35991e10d Mon Sep 17 00:00:00 2001 From: Minijackson Date: Wed, 16 Jun 2021 23:02:31 +0200 Subject: lib: init with theme and generators --- lib/default.nix | 6 ++++++ lib/generators.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 lib/default.nix create mode 100644 lib/generators.nix (limited to 'lib') diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..4bdd20d --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,6 @@ +attrs: + +{ + generators = import ./generators.nix attrs; + theme = import ./theme.nix attrs; +} diff --git a/lib/generators.nix b/lib/generators.nix new file mode 100644 index 0000000..e93d4b0 --- /dev/null +++ b/lib/generators.nix @@ -0,0 +1,41 @@ +{ lib, ... }: + +with lib; + +{ + lua = {}: rec { + type = with types; let + valueType = nullOr + (oneOf [ + bool + int + float + str + (attrsOf valueType) + (listOf valueType) + ]) // { + description = "Lua value"; + }; in + valueType; + + lib = { + mkRaw = value: { inherit value; _type = "raw"; }; + }; + + generate = value: + let + list = l: "{ ${concatMapStringsSep ", " generate l} }"; + attrs = a: "{ ${concatStringsSep ", " (mapAttrsToList (name: value: "[${generate name}] = ${generate value}") a)} }"; + in + if value ? _type && value._type == "raw" then value.value + else if isInt value then toString value + else if isFloat value then toString value + else if isString value then "'${escape [ "'" ] value }'" + else if true == value then "true" + else if false == value then "false" + else if null == value then "nil" + else if isList value then list value + else if isAttrs value then attrs value + else abort "Lua value not supported: ${toPretty value}"; + }; +} -- cgit v1.2.3