# Copyright 2022-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# renovate: datasource=github-tags depName=henrygd/beszel
# Current version: v0.20.0

EAPI=8

inherit go-module systemd

MY_P="beszel-${PV}"
DESCRIPTION="Beszel Hub - Simple, lightweight server monitoring"
HOMEPAGE="https://www.beszel.dev/ https://github.com/henrygd/beszel/"
EGO_SUM=(
	"filippo.io/edwards25519 v1.1.0"
	"filippo.io/edwards25519 v1.1.0/go.mod"
	"github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be"
	"github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod"
	"github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod"
	"github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2"
	"github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod"
	"github.com/blang/semver v3.5.1+incompatible"
	"github.com/blang/semver v3.5.1+incompatible/go.mod"
	"github.com/coreos/go-systemd/v22 v22.7.0"
	"github.com/coreos/go-systemd/v22 v22.7.0/go.mod"
	"github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod"
	"github.com/davecgh/go-spew v1.1.0/go.mod"
	"github.com/disintegration/imaging v1.6.2"
	"github.com/disintegration/imaging v1.6.2/go.mod"
	"github.com/distribution/reference v0.6.0"
	"github.com/distribution/reference v0.6.0/go.mod"
	"github.com/domodwyer/mailyak/v3 v3.6.2"
	"github.com/domodwyer/mailyak/v3 v3.6.2/go.mod"
	"github.com/dustin/go-humanize v1.1.0"
	"github.com/dustin/go-humanize v1.1.0/go.mod"
	"github.com/ebitengine/purego v0.11.0"
	"github.com/ebitengine/purego v0.11.0/go.mod"
	"github.com/eclipse/paho.golang v0.23.0"
	"github.com/eclipse/paho.golang v0.23.0/go.mod"
	"github.com/fatih/color v1.19.0"
	"github.com/fatih/color v1.19.0/go.mod"
	"github.com/frankban/quicktest v1.14.6"
	"github.com/frankban/quicktest v1.14.6/go.mod"
	"github.com/fsnotify/fsnotify v1.10.1"
	"github.com/fsnotify/fsnotify v1.10.1/go.mod"
	"github.com/fxamacker/cbor/v2 v2.9.4"
	"github.com/fxamacker/cbor/v2 v2.9.4/go.mod"
	"github.com/gabriel-vasile/mimetype v1.4.15"
	"github.com/gabriel-vasile/mimetype v1.4.15/go.mod"
	"github.com/ganigeorgiev/fexpr v0.6.0"
	"github.com/ganigeorgiev/fexpr v0.6.0/go.mod"
	"github.com/gliderlabs/ssh v0.3.8"
	"github.com/gliderlabs/ssh v0.3.8/go.mod"
	"github.com/godbus/dbus/v5 v5.2.2"
	"github.com/godbus/dbus/v5 v5.2.2/go.mod"
	"github.com/golang-jwt/jwt/v5 v5.3.1"
	"github.com/golang-jwt/jwt/v5 v5.3.1/go.mod"
	"github.com/golang/protobuf v1.3.1/go.mod"
	"github.com/go-logr/logr v1.4.4"
	"github.com/go-logr/logr v1.4.4/go.mod"
	"github.com/google/go-cmp v0.7.0"
	"github.com/google/go-cmp v0.7.0/go.mod"
	"github.com/google/pprof v0.0.0-20260906184651-6331bc6350fe"
	"github.com/google/pprof v0.0.0-20260906184651-6331bc6350fe/go.mod"
	"github.com/google/uuid v1.6.0"
	"github.com/google/uuid v1.6.0/go.mod"
	"github.com/go-ole/go-ole v1.2.6/go.mod"
	"github.com/go-ole/go-ole v1.3.0"
	"github.com/go-ole/go-ole v1.3.0/go.mod"
	"github.com/gorilla/websocket v1.5.3"
	"github.com/gorilla/websocket v1.5.3/go.mod"
	"github.com/go-sql-driver/mysql v1.4.1/go.mod"
	"github.com/go-sql-driver/mysql v1.9.1"
	"github.com/go-sql-driver/mysql v1.9.1/go.mod"
	"github.com/go-task/slim-sprig/v3 v3.0.0"
	"github.com/go-task/slim-sprig/v3 v3.0.0/go.mod"
	"github.com/hashicorp/golang-lru/v2 v2.0.7"
	"github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod"
	"github.com/inconshreveable/mousetrap v1.1.0"
	"github.com/inconshreveable/mousetrap v1.1.0/go.mod"
	"github.com/jarcoal/httpmock v1.4.2"
	"github.com/jarcoal/httpmock v1.4.2/go.mod"
	"github.com/jessevdk/go-flags v1.4.0/go.mod"
	"github.com/klauspost/compress v1.20.0"
	"github.com/klauspost/compress v1.20.0/go.mod"
	"github.com/kr/pretty v0.3.1"
	"github.com/kr/pretty v0.3.1/go.mod"
	"github.com/kr/text v0.2.0"
	"github.com/kr/text v0.2.0/go.mod"
	"github.com/lufia/plan9stats v0.0.0-20260802145828-341c2f0c90b5"
	"github.com/lufia/plan9stats v0.0.0-20260802145828-341c2f0c90b5/go.mod"
	"github.com/lxzan/gws v1.10.2"
	"github.com/lxzan/gws v1.10.2/go.mod"
	"github.com/Masterminds/semver/v3 v3.5.0"
	"github.com/Masterminds/semver/v3 v3.5.0/go.mod"
	"github.com/mattn/go-colorable v0.1.15"
	"github.com/mattn/go-colorable v0.1.15/go.mod"
	"github.com/mattn/go-isatty v0.0.24"
	"github.com/mattn/go-isatty v0.0.24/go.mod"
	"github.com/ncruces/go-strftime v1.0.0"
	"github.com/ncruces/go-strftime v1.0.0/go.mod"
	"github.com/nicholas-fedor/shoutrrr v0.21.0"
	"github.com/nicholas-fedor/shoutrrr v0.21.0/go.mod"
	"github.com/onsi/ginkgo/v2 v2.32.2"
	"github.com/onsi/ginkgo/v2 v2.32.2/go.mod"
	"github.com/onsi/gomega v1.43.0"
	"github.com/onsi/gomega v1.43.0/go.mod"
	"github.com/opencontainers/go-digest v1.0.0"
	"github.com/opencontainers/go-digest v1.0.0/go.mod"
	"github.com/pmezard/go-difflib v1.0.0/go.mod"
	"github.com/pocketbase/dbx v1.12.0"
	"github.com/pocketbase/dbx v1.12.0/go.mod"
	"github.com/pocketbase/ozzo-validation/v4 v4.3.0"
	"github.com/pocketbase/ozzo-validation/v4 v4.3.0/go.mod"
	"github.com/pocketbase/pocketbase v0.40.4"
	"github.com/pocketbase/pocketbase v0.40.4/go.mod"
	"github.com/power-devops/perfstat v0.0.0-20260916203055-22a1a467d9f0"
	"github.com/power-devops/perfstat v0.0.0-20260916203055-22a1a467d9f0/go.mod"
	"github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec"
	"github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod"
	"github.com/rogpeppe/go-internal v1.9.0"
	"github.com/rogpeppe/go-internal v1.9.0/go.mod"
	"github.com/russross/blackfriday/v2 v2.1.0/go.mod"
	"github.com/shirou/gopsutil/v4 v4.26.8"
	"github.com/shirou/gopsutil/v4 v4.26.8/go.mod"
	"github.com/spf13/cast v1.10.0"
	"github.com/spf13/cast v1.10.0/go.mod"
	"github.com/spf13/cobra v1.10.2"
	"github.com/spf13/cobra v1.10.2/go.mod"
	"github.com/spf13/pflag v1.0.10"
	"github.com/spf13/pflag v1.0.10/go.mod"
	"github.com/spf13/pflag v1.0.9/go.mod"
	"github.com/stretchr/objx v0.1.0/go.mod"
	"github.com/stretchr/objx v0.5.3"
	"github.com/stretchr/objx v0.5.3/go.mod"
	"github.com/stretchr/testify v1.12.1"
	"github.com/stretchr/testify v1.12.1/go.mod"
	"github.com/stretchr/testify v1.4.0/go.mod"
	"github.com/tklauser/go-sysconf v0.4.0"
	"github.com/tklauser/go-sysconf v0.4.0/go.mod"
	"github.com/tklauser/numcpus v0.12.0"
	"github.com/tklauser/numcpus v0.12.0/go.mod"
	"github.com/x448/float16 v0.8.4"
	"github.com/x448/float16 v0.8.4/go.mod"
	"github.com/yusufpapurcu/wmi v1.2.4"
	"github.com/yusufpapurcu/wmi v1.2.4/go.mod"
	"golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod"
	"golang.org/x/crypto v0.57.0"
	"golang.org/x/crypto v0.57.0/go.mod"
	"golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba"
	"golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba/go.mod"
	"golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod"
	"golang.org/x/image v0.46.0"
	"golang.org/x/image v0.46.0/go.mod"
	"golang.org/x/mod v0.41.0"
	"golang.org/x/mod v0.41.0/go.mod"
	"golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod"
	"golang.org/x/net v0.59.0"
	"golang.org/x/net v0.59.0/go.mod"
	"golang.org/x/oauth2 v0.37.0"
	"golang.org/x/oauth2 v0.37.0/go.mod"
	"golang.org/x/sync v0.23.0"
	"golang.org/x/sync v0.23.0/go.mod"
	"golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod"
	"golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod"
	"golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod"
	"golang.org/x/sys v0.1.0/go.mod"
	"golang.org/x/sys v0.48.0"
	"golang.org/x/sys v0.48.0/go.mod"
	"golang.org/x/term v0.46.0"
	"golang.org/x/term v0.46.0/go.mod"
	"golang.org/x/text v0.3.0/go.mod"
	"golang.org/x/text v0.3.2/go.mod"
	"golang.org/x/text v0.42.0"
	"golang.org/x/text v0.42.0/go.mod"
	"golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod"
	"golang.org/x/tools v0.50.0"
	"golang.org/x/tools v0.50.0/go.mod"
	"google.golang.org/appengine v1.6.5/go.mod"
	"gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405"
	"gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod"
	"gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod"
	"gopkg.in/yaml.v2 v2.2.2/go.mod"
	"gopkg.in/yaml.v3 v3.0.1"
	"gopkg.in/yaml.v3 v3.0.1/go.mod"
	"go.uber.org/goleak v1.3.0"
	"go.uber.org/goleak v1.3.0/go.mod"
	"go.yaml.in/yaml/v3 v3.0.4/go.mod"
	"go.yaml.in/yaml/v3 v3.0.5"
	"go.yaml.in/yaml/v3 v3.0.5/go.mod"
	"howett.net/plist v1.0.1"
	"howett.net/plist v1.0.1/go.mod"
	"mellium.im/reader v0.1.0"
	"mellium.im/reader v0.1.0/go.mod"
	"mellium.im/sasl v0.3.2"
	"mellium.im/sasl v0.3.2/go.mod"
	"mellium.im/xmlstream v0.15.4"
	"mellium.im/xmlstream v0.15.4/go.mod"
	"mellium.im/xmpp v0.23.0"
	"mellium.im/xmpp v0.23.0/go.mod"
	"modernc.org/ccgo/v4 v4.34.6"
	"modernc.org/ccgo/v4 v4.34.6/go.mod"
	"modernc.org/cc/v4 v4.29.1"
	"modernc.org/cc/v4 v4.29.1/go.mod"
	"modernc.org/fileutil v1.4.0"
	"modernc.org/fileutil v1.4.0/go.mod"
	"modernc.org/gc/v2 v2.6.5"
	"modernc.org/gc/v2 v2.6.5/go.mod"
	"modernc.org/gc/v3 v3.1.4"
	"modernc.org/gc/v3 v3.1.4/go.mod"
	"modernc.org/goabi0 v0.2.0"
	"modernc.org/goabi0 v0.2.0/go.mod"
	"modernc.org/libc v1.74.4"
	"modernc.org/libc v1.74.4/go.mod"
	"modernc.org/mathutil v1.7.1"
	"modernc.org/mathutil v1.7.1/go.mod"
	"modernc.org/memory v1.12.1"
	"modernc.org/memory v1.12.1/go.mod"
	"modernc.org/opt v0.2.0"
	"modernc.org/opt v0.2.0/go.mod"
	"modernc.org/sortutil v1.2.1"
	"modernc.org/sortutil v1.2.1/go.mod"
	"modernc.org/sqlite v1.57.0"
	"modernc.org/sqlite v1.57.0/go.mod"
	"modernc.org/strutil v1.2.1"
	"modernc.org/strutil v1.2.1/go.mod"
	"modernc.org/token v1.1.0"
	"modernc.org/token v1.1.0/go.mod"
)

go-module_set_globals

SRC_URI="https://github.com/henrygd/beszel/archive/refs/tags/v${PV}.tar.gz -> ${MY_P}.tar.gz
	${EGO_SUM_SRC_URI}
	https://gentoo-overlay.friedli.info/${MY_P}-site.tar.xz"

S="${WORKDIR}/${MY_P}"

LICENSE="AGPL-3+"
# Go dependency licenses
LICENSE+=" AGPL-3 Apache-2.0 BSD GPL-3+ ISC MIT MPL-2.0 public-domain"
SLOT="0"
KEYWORDS="~amd64"

DEPEND="acct-user/beszel-hub
	acct-group/beszel"

BDEPEND=">=dev-lang/go-1.27.1"

src_compile() {
	cd internal/cmd/hub
	ego build -ldflags "-w -s"
}

src_install() {
	newbin "${S}/internal/cmd/hub/hub" ${PN}

	dodir /etc/${PN}
	keepdir /var/lib/${PN}

	insinto /etc/${PN}
	doins "${FILESDIR}/${PN}.env"

	fowners -R ${PN}:beszel /etc/${PN} /var/lib/${PN}
	fperms 0750 /etc/${PN} /var/lib/${PN}
	fperms 0600 /etc/${PN}/${PN}.env

	systemd_dounit "${FILESDIR}/${PN}.service"
	newconfd "${FILESDIR}/${PN}.confd" ${PN}
	newinitd "${FILESDIR}/${PN}.initd" ${PN}
}
