Index: sysutils/Makefile =================================================================== --- sysutils/Makefile +++ sysutils/Makefile @@ -1345,6 +1345,7 @@ SUBDIR += swapusage SUBDIR += sweeper SUBDIR += swtpm + SUBDIR += sylve SUBDIR += symlinks SUBDIR += symon SUBDIR += synergy Index: sysutils/sylve/Makefile =================================================================== --- /dev/null +++ sysutils/sylve/Makefile @@ -0,0 +1,33 @@ +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 + +LIB_DEPENDS= libpcap.so:net/libpcap + +RUN_DEPENDS= bhyve-firmware>0:sysutils/bhyve-firmware \ + samba419>=0:net/samba419 \ + smartmontools>=0:sysutils/smartmontools \ + tmux>=0:sysutils/tmux \ + virsh>=0:devel/libvirt + +USES= go:modules +USE_RC_SUBR= ${PORTNAME} + +GO_MODULE= github.com/alchemillahq/sylve + +GO_TARGET= ./cmd/sylve + +PLIST_FILES= sbin/sylve + +do-install: + ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} \ + ${STAGEDIR}${PREFIX}/sbin/${PORTNAME} + +.include Index: sysutils/sylve/distinfo =================================================================== --- /dev/null +++ sysutils/sylve/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1755960504 +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 Index: sysutils/sylve/files/sylve.in =================================================================== --- /dev/null +++ sysutils/sylve/files/sylve.in @@ -0,0 +1,58 @@ +#!/bin/sh +# +# PROVIDE: sylve +# REQUIRE: DAEMON NETWORKING +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable sylve: +# sylve_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable sylve. +# sylve_user (user): Set to "www" by default. +# User to run sylve as. +# sylve_group (group): Set to "www" by default. +# Group to run sylve as. +# sylve_args (str): Set to "" by default. +# Extra flags passed to sylve. + +. /etc/rc.subr + +name=sylve +rcvar=sylve_enable + +load_rc_config $name + +: ${sylve_enable:="NO"} +: ${sylve_user:="root"} +: ${sylve_group:="root"} +: ${sylve_args:=""} + +pidfile="/var/run/${name}.pid" +daemon_pidfile="/var/run/${name}-daemon.pid" +procname="%%PREFIX%%/sbin/sylve" +command="/usr/sbin/daemon" +command_args="-f -c -R 5 -r -T ${name} -p ${pidfile} -P ${daemon_pidfile} ${procname} ${sylve_args}" + +start_precmd=sylve_startprecmd +stop_postcmd=sylve_stoppostcmd + +sylve_startprecmd() +{ + if [ ! -e ${daemon_pidfile} ]; then + install -o ${sylve_user} -g ${sylve_group} /dev/null ${daemon_pidfile}; + fi + if [ ! -e ${pidfile} ]; then + install -o ${sylve_user} -g ${sylve_group} /dev/null ${pidfile}; + fi +} + + +sylve_stoppostcmd() +{ + if [ -f "${daemon_pidfile}" ]; then + pids=$( pgrep -F ${daemon_pidfile} 2>&1 ) + _err=$? + [ ${_err} -eq 0 ] && kill -9 ${pids} + fi +} + +run_rc_command "$1" Index: sysutils/sylve/pkg-descr =================================================================== --- /dev/null +++ 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.