git: a38503737a49 - main - sysutils/vm-tui: New port

From: Jimmy Olgeni <olgeni_at_FreeBSD.org>
Date: Mon, 14 Sep 2026 07:51:03 UTC
The branch main has been updated by olgeni:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a38503737a498fc6e2fa2d05fc85f4b894797f7c

commit a38503737a498fc6e2fa2d05fc85f4b894797f7c
Author:     Jimmy Olgeni <olgeni@FreeBSD.org>
AuthorDate: 2026-09-14 06:53:25 +0000
Commit:     Jimmy Olgeni <olgeni@FreeBSD.org>
CommitDate: 2026-09-14 07:50:35 +0000

    sysutils/vm-tui: New port
    
    vm-tui is a terminal UI and scripting front-end for vm-bhyve, showing
    guests, switches, datastores, images, templates and rc.conf settings,
    and editing guest configuration keys with pre-flight checks.
    
    WWW: https://github.com/olgeni/vm-tui
---
 sysutils/Makefile         |  1 +
 sysutils/vm-tui/Makefile  | 36 ++++++++++++++++++++++++++++++++++++
 sysutils/vm-tui/distinfo  |  5 +++++
 sysutils/vm-tui/pkg-descr | 13 +++++++++++++
 4 files changed, 55 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index df41bb41df1b..ac33397d80a6 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1628,6 +1628,7 @@
     SUBDIR += vm-bhyve
     SUBDIR += vm-bhyve-devel
     SUBDIR += vm-bhyve-zcomp
+    SUBDIR += vm-tui
     SUBDIR += vmdktool
     SUBDIR += vmstated
     SUBDIR += vmtouch
diff --git a/sysutils/vm-tui/Makefile b/sysutils/vm-tui/Makefile
new file mode 100644
index 000000000000..4cf2908f0ee0
--- /dev/null
+++ b/sysutils/vm-tui/Makefile
@@ -0,0 +1,36 @@
+PORTNAME=	vm-tui
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.0.0
+CATEGORIES=	sysutils
+
+MAINTAINER=	olgeni@FreeBSD.org
+COMMENT=	Terminal UI and CLI for vm-bhyve guests, switches and images
+WWW=		https://github.com/olgeni/vm-tui
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	vm:sysutils/vm-bhyve
+
+USES=		go:modules
+GO_MODULE=	github.com/olgeni/vm-tui
+
+PLIST_FILES=	bin/vm-tui \
+		share/bash-completion/completions/vm-tui \
+		share/fish/vendor_completions.d/vm-tui.fish \
+		share/man/man1/vm-tui.1.gz \
+		share/zsh/site-functions/_vm-tui
+
+post-install:
+	${INSTALL_MAN} ${WRKSRC}/vm-tui.1 ${STAGEDIR}${PREFIX}/share/man/man1/
+	@${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions \
+		${STAGEDIR}${PREFIX}/share/fish/vendor_completions.d \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${WRKSRC}/completions/vm-tui.bash \
+		${STAGEDIR}${PREFIX}/share/bash-completion/completions/vm-tui
+	${INSTALL_DATA} ${WRKSRC}/completions/vm-tui.fish \
+		${STAGEDIR}${PREFIX}/share/fish/vendor_completions.d/vm-tui.fish
+	${INSTALL_DATA} ${WRKSRC}/completions/_vm-tui \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_vm-tui
+
+.include <bsd.port.mk>
diff --git a/sysutils/vm-tui/distinfo b/sysutils/vm-tui/distinfo
new file mode 100644
index 000000000000..746293ccdcf0
--- /dev/null
+++ b/sysutils/vm-tui/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1789366510
+SHA256 (go/sysutils_vm-tui/vm-tui-v1.0.0/v1.0.0.mod) = a2879d60e0f75a9c712112baa6cdeb5a55ed37d7ffecfd77b2a4da54a510979d
+SIZE (go/sysutils_vm-tui/vm-tui-v1.0.0/v1.0.0.mod) = 1604
+SHA256 (go/sysutils_vm-tui/vm-tui-v1.0.0/v1.0.0.zip) = dcb4b3baa77954ba5a2530e9246fa25f430a6c5fc489d7be03ad1123952802bd
+SIZE (go/sysutils_vm-tui/vm-tui-v1.0.0/v1.0.0.zip) = 555042
diff --git a/sysutils/vm-tui/pkg-descr b/sysutils/vm-tui/pkg-descr
new file mode 100644
index 000000000000..09443c9c18a3
--- /dev/null
+++ b/sysutils/vm-tui/pkg-descr
@@ -0,0 +1,13 @@
+vm-tui is a terminal UI and scripting front-end for vm-bhyve, the bhyve
+guest manager. It shows the guests, the virtual switches with the bridges
+behind them, the datastores, the ISOs and cloud images, the templates and
+the rc.conf settings on one screen each.
+
+A guest opens as its configuration keys grouped by subject, with each disk
+and interface carrying what vm info and ifconfig know about it. Keys are
+edited through a list of the allowed values with their meaning, and every
+action shows the exact vm, sysrc, qemu-img and zfs commands it will run
+before running them, with pre-flight notes on what will be refused.
+
+Non-interactive flags print guests, switches and configuration keys, with
+optional JSON output, for use in scripts.