diff --git a/runtime/indent/dts.vim b/runtime/indent/dts.vim
new file mode 100644
index 0000000..e87f815
--- /dev/null
+++ b/runtime/indent/dts.vim
@@ -0,0 +1,63 @@
+" Vim indent file
+" Language:		Device Tree
+" Maintainer:		Roland Hieber, Pengutronix <rhi@pengutronix.de>
+"
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal nosmartindent
+setlocal indentkeys=o,O,0},0<>>,!<Ctrl-F>
+setlocal indentexpr=GetDTSIndent()
+setlocal nolisp
+
+let b:undo_indent = 'setl autoindent< smartindent< indentkeys< indentexpr< lisp<'
+
+function GetDTSIndent()
+    let sw        = shiftwidth()
+    let lnum      = v:lnum
+    let line      = getline(lnum)
+    let prevline  = getline(prevnonblank(lnum-1))
+    let prevind   = indent(prevnonblank(lnum-1))
+
+    if prevnonblank(lnum-1) < 1
+        return 0
+    endif
+
+    " Don't indent header and preprocessor directives
+    if line =~ '^\s*\(/dts-\|#\(include\|define\|undef\|warn\(ing\)\?\|error\|if\(n\?def\)\?\|else\|elif\|endif\)\)'
+        return 0
+
+    " Don't indent /node and &label blocks
+    elseif line =~ '^\s*[/&].\+{\s*$'
+        return 0
+
+    " Indent to matching bracket or remove one shiftwidth if line begins with } or >
+    elseif line =~ '^\s*[}>]'
+        " set cursor to closing bracket on current line
+        let col = matchend(line, '^\s*[>}]')
+        call cursor(lnum, col)
+        
+        " determine bracket type, {} or <>
+        let pair = strpart('{}<>', stridx('}>', line[col-1]) * 2, 2)
+
+        " find matching bracket pair
+        let pairline = searchpair(pair[0], '', pair[1], 'bW')
+
+        if pairline > 0 
+            return indent(pairline)
+        else
+            return prevind - sw
+        endif
+
+    " else, add one level of indent if line ends in { or < or = or ,
+    elseif prevline =~ '[{<=,]$'
+        return prevind + sw
+
+    else
+        return prevind
+    endif
+
+endfunction
diff --git a/runtime/indent/luau.vim b/runtime/indent/luau.vim
new file mode 100644
index 0000000..69893f7
--- /dev/null
+++ b/runtime/indent/luau.vim
@@ -0,0 +1,14 @@
+" Vim filetype indent file
+" Language:    Luau
+" Maintainer:  None yet
+" Last Change: 2023 Apr 30
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+    finish
+endif
+
+" Luau is a superset of Lua
+runtime! indent/lua.vim
+
+
diff --git a/runtime/indent/testdir/dts.in b/runtime/indent/testdir/dts.in
new file mode 100644
index 0000000..64e56e9
--- /dev/null
+++ b/runtime/indent/testdir/dts.in
@@ -0,0 +1,46 @@
+/* vim: set ft=dts noet sw=8 : */
+
+/* START_INDENT */
+/dts-v1/;
+#include <dt-bindings/pinctrl/pinctrl-imx6q.h>
+	#include "imx6qdl.dtsi"
+#include "imx6qdl-someboard.dtsi"
+
+	/delete-node/ &{/memory@10000000};
+
+	/ {
+compatible = "some,board";
+/delete-node/ memory;
+
+	chosen {
+environment = &{usdhc4/partitions/partition@0};
+};
+}
+
+	&iomuxc {
+pinctrl-names = "default";
+pinctrl-0 = <&pinctrl_hog>;
+
+pinctrl_gpiohog: gpiohoggrp {
+fsl,pins = <
+MX6QDL_PAD_GPIO_9__GPIO1_IO09           0x130b0
+MX6QDL_PAD_GPIO_17__GPIO7_IO12          0x130b0
+>;
+};
+}
+
+&usdhc4 {
+partitions {
+compatible = "fixed-partitions";
+
+partition@0 {
+label = "environment";
+reg = <0x0 0xe0000>;
+};
+};
+};
+
+&{/aliases} {
+usb0 = &usb;
+};
+/* END_INDENT */
diff --git a/runtime/indent/testdir/dts.ok b/runtime/indent/testdir/dts.ok
new file mode 100644
index 0000000..d249766
--- /dev/null
+++ b/runtime/indent/testdir/dts.ok
@@ -0,0 +1,46 @@
+/* vim: set ft=dts noet sw=8 : */
+
+/* START_INDENT */
+/dts-v1/;
+#include <dt-bindings/pinctrl/pinctrl-imx6q.h>
+#include "imx6qdl.dtsi"
+#include "imx6qdl-someboard.dtsi"
+
+/delete-node/ &{/memory@10000000};
+
+/ {
+	compatible = "some,board";
+	/delete-node/ memory;
+
+	chosen {
+		environment = &{usdhc4/partitions/partition@0};
+	};
+}
+
+&iomuxc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hog>;
+
+	pinctrl_gpiohog: gpiohoggrp {
+		fsl,pins = <
+			MX6QDL_PAD_GPIO_9__GPIO1_IO09           0x130b0
+			MX6QDL_PAD_GPIO_17__GPIO7_IO12          0x130b0
+		>;
+	};
+}
+
+&usdhc4 {
+	partitions {
+		compatible = "fixed-partitions";
+
+		partition@0 {
+			label = "environment";
+			reg = <0x0 0xe0000>;
+		};
+	};
+};
+
+&{/aliases} {
+	usb0 = &usb;
+};
+/* END_INDENT */
