diff --git a/sysutils/sylve/Makefile b/sysutils/sylve/Makefile new file mode 100644 index 000000000000..fb69fea9b41d --- /dev/null +++ b/sysutils/sylve/Makefile @@ -0,0 +1,75 @@ +PORTNAME= sylve +DISTVERSIONPREFIX= v +DISTVERSION= 0.0.1 +CATEGORIES= sysutils + +MAINTAINER= hayzam@alchemilla.io +COMMENT= Lightweight GUI for managing Bhyve, Jails, ZFS, networking +WWW= https://github.com/alchemillahq/sylve + +LICENSE= BSD2CLAUSE + +ONLY_FOR_ARCHS= aarch64 amd64 + +BUILD_DEPENDS= npm-node20>0:www/npm-node20 +RUN_DEPENDS= bhyve-firmware>0:sysutils/bhyve-firmware \ + dnsmasq>0:dns/dnsmasq \ + samba419>=0:net/samba419 \ + smartmontools>=0:sysutils/smartmontools \ + tmux>=0:sysutils/tmux \ + virsh:devel/libvirt + +USES= go:modules nodejs:20,build +USE_RC_SUBR= ${PORTNAME} + +GO_MODULE= github.com/alchemillahq/sylve + +GO_TARGET= ./cmd/sylve + +NPM_BIN= ${LOCALBASE}/bin/npm + +# to rebuild the deps archive: +# 1. set DEV_UPDATE_MODE=yes +# 2. make makesum build +# 3. upload the *-cache archive +# 4. set DEV_UPDATE_MODE=no +# 5. make clean makesum + +DEV_UPDATE_MODE= no +DEPS_CACHE_DIR= ${WRKSRC}/web + +.if (${DEV_UPDATE_MODE} == "yes") +NPM_ARGS= install +post-patch: + @${RM} ${WKRSRC}/web/package-lock.json + +post-build: + @cd ${DEPS_CACHE_DIR} && ${TAR} czf ${DISTDIR}/${DIST_SUBDIR}/${PORTNAME}-cache-${ARCH}-${DISTVERSION}${EXTRACT_SUFX} node_modules + @${ECHO} "(!!!) Please upload the cache archive: ${DISTDIR}/${DIST_SUBDIR}/${PORTNAME}-cache-${ARCH}-${DISTVERSION}${EXTRACT_SUFX}" +.else +MASTER_SITES+= LOCAL/acm/sylve/:npm_cache +DISTFILES+= ${PORTNAME}-cache-${ARCH}-${DISTVERSION}${EXTRACT_SUFX}:npm_cache +NPM_ARGS= run build + +post-extract: + @${MV} ${WRKDIR}/node_modules ${WRKSRC}/web + +post-patch: + ${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|g' ${WRKSRC}/config.example.json +.endif + +pre-build: + @${MKDIR} ${WRKSRC}/web/build + @cd ${WRKSRC}/web && \ + ${NPM_BIN} ${NPM_ARGS} + @cd ${WRKSRC}/web/build && \ + ${COPYTREE_SHARE} . ${WRKSRC}/internal/assets/web-files/ + +do-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${MKDIR} ${STAGEDIR}${DATADIR} + ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} \ + ${STAGEDIR}${PREFIX}/sbin/${PORTNAME} + ${INSTALL_DATA} ${WRKSRC}/config.example.json ${STAGEDIR}${ETCDIR}/config.json.sample + +.include diff --git a/sysutils/sylve/distinfo b/sysutils/sylve/distinfo new file mode 100644 index 000000000000..feb148dfb528 --- /dev/null +++ b/sysutils/sylve/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1757118755 +SHA256 (go/sysutils_sylve/sylve-v0.0.1/sylve-cache-amd64-0.0.1.tar.gz) = f5694f744a53f49925dc294ccc88165399b0019ee1b7d00139fd6d8dc39f6e0e +SIZE (go/sysutils_sylve/sylve-v0.0.1/sylve-cache-amd64-0.0.1.tar.gz) = 52038996 +SHA256 (go/sysutils_sylve/sylve-v0.0.1/sylve-cache-aarch64-0.0.1.tar.gz) = f99c32aaac78499e2b6888c64282eb463861bacfc06de4a44f10241fa884428a +SIZE (go/sysutils_sylve/sylve-v0.0.1/sylve-cache-aarch64-0.0.1.tar.gz) = 48331293 +SHA256 (go/sysutils_sylve/sylve-v0.0.1/v0.0.1.mod) = 4c781a74a960c9621af9542b317e93b34854e48d9d0e84e2015e00a4dceb5d9e +SIZE (go/sysutils_sylve/sylve-v0.0.1/v0.0.1.mod) = 4391 +SHA256 (go/sysutils_sylve/sylve-v0.0.1/v0.0.1.zip) = f0ef44138c55d8fafebb665860b64a7cfe7b873f8f35ef4209c5dd891065af64 +SIZE (go/sysutils_sylve/sylve-v0.0.1/v0.0.1.zip) = 2286786 diff --git a/sysutils/sylve/files/patch-config.example.json b/sysutils/sylve/files/patch-config.example.json new file mode 100644 index 000000000000..2c6597a1c2af --- /dev/null +++ b/sysutils/sylve/files/patch-config.example.json @@ -0,0 +1,10 @@ +--- config.example.json.orig 2025-09-06 01:07:24 UTC ++++ config.example.json +@@ -6,6 +6,7 @@ + "email": "admin@sylve.local", + "password": "admin" + }, ++ "DataPath":"%%DATADIR%%", + "logLevel": 0, + "port": 8181 + } diff --git a/sysutils/sylve/files/pkg-message.in b/sysutils/sylve/files/pkg-message.in new file mode 100644 index 000000000000..9f914ccf93a2 --- /dev/null +++ b/sysutils/sylve/files/pkg-message.in @@ -0,0 +1,37 @@ +[ +{ type: install + message: <&1 ) + _err=$? + [ ${_err} -eq 0 ] && kill -9 ${pids} + fi +} + +run_rc_command "$1" diff --git a/sysutils/sylve/pkg-descr b/sysutils/sylve/pkg-descr new file mode 100644 index 000000000000..e97d487cef06 --- /dev/null +++ b/sysutils/sylve/pkg-descr @@ -0,0 +1,5 @@ +Sylve is a lightweight, open-source virtualization platform for FreeBSD, +leveraging Bhyve for VMs and Jails for containerization, with deep ZFS +integration. It provides a streamlined, Proxmox-like experience tailored for +FreeBSD environments. Its backend is written in Go, and the frontend is written +in Svelte (with Kit), integrated into a single binary for easy deployment. diff --git a/sysutils/sylve/pkg-plist b/sysutils/sylve/pkg-plist new file mode 100644 index 000000000000..9813ec1fa50b --- /dev/null +++ b/sysutils/sylve/pkg-plist @@ -0,0 +1,3 @@ +@sample %%ETCDIR%%/config.json.sample +sbin/sylve +@dir %%DATADIR%%