From c347d605c95e59a28052bed08cffbc0ddf01a257 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sat, 15 Mar 2025 10:29:28 +0000 Subject: [PATCH] lib.types: add `luaInline` Represents inline lua as expected by `lib.generators.toLua`, for embedding raw lua expressions within structurally generated lua. --- lib/types.nix | 9 +++++++++ nixos/doc/manual/development/option-types.section.md | 7 +++++++ nixos/doc/manual/redirects.json | 3 +++ 3 files changed, 19 insertions(+) diff --git a/lib/types.nix b/lib/types.nix index cdba500ae07f..3ca25cafa8eb 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -834,6 +834,15 @@ rec { }; }; + # A value produced by `lib.mkLuaInline` + luaInline = mkOptionType { + name = "luaInline"; + description = "inline lua"; + descriptionClass = "noun"; + check = x: x._type or null == "lua-inline"; + merge = mergeEqualOption; + }; + uniq = unique { message = ""; }; unique = { message }: type: mkOptionType rec { diff --git a/nixos/doc/manual/development/option-types.section.md b/nixos/doc/manual/development/option-types.section.md index dc16e5113fd1..f39472e2ba61 100644 --- a/nixos/doc/manual/development/option-types.section.md +++ b/nixos/doc/manual/development/option-types.section.md @@ -232,6 +232,13 @@ merging is handled. definitions cannot be merged. The regular expression is processed using `builtins.match`. +### Specialised types {#sec-option-types-specialised} + +`types.luaInline` + +: A string wrapped using `lib.mkLuaInline`. Allows embedding lua expressions + inline within generated lua. Multiple definitions cannot be merged. + ## Submodule types {#sec-option-types-submodule} Submodules are detailed in [Submodule](#section-option-types-submodule). diff --git a/nixos/doc/manual/redirects.json b/nixos/doc/manual/redirects.json index 950266de4e35..29f7f9d51996 100644 --- a/nixos/doc/manual/redirects.json +++ b/nixos/doc/manual/redirects.json @@ -1592,6 +1592,9 @@ "sec-option-types-string": [ "index.html#sec-option-types-string" ], + "sec-option-types-specialised": [ + "index.html#sec-option-types-specialised" + ], "sec-option-types-submodule": [ "index.html#sec-option-types-submodule" ],