View Raw Ebuild
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit go-module optfeature systemd tmpfiles
DESCRIPTION="FLOSS alternative to subsonic"
HOMEPAGE="https://github.com/sentriz/gonic"
SRC_URI="https://github.com/sentriz/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
SRC_URI+=" https://pub.sinustrom.info/gentoo/${P}-deps.tar.xz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE="systemd"
DEPEND="
>=dev-lang/go-1.21
acct-group/gonic
acct-user/gonic
dev-db/sqlite
media-libs/taglib
"
src_prepare() {
default
# Use Gentoo's naming convention for configuration file names
sed -i -e 's/\/config/\/gonic.conf/' contrib/gonic.service || die "sed failed!"
# Update binary path in systemd unit
sed -i -e 's/\/local\/bin/\/sbin/' contrib/gonic.service || die "sed failed!"
}
src_compile() {
ego build ./cmd/${PN}
}
src_install() {
# Binary
dobin "${PN}"
# Configuration
insinto "/etc/${PN}"
newins "${S}/contrib/config" "${PN}.conf"
# Init system configs
if use systemd; then
systemd_dounit "${S}/contrib/${PN}.service"
else
newinitd "${FILESDIR}/${PN}.initd" "${PN}"
newconfd "${FILESDIR}/${PN}.confd" "${PN}"
fi
# Log directory
keepdir "/var/log/${PN}"
# Default state directory
keepdir "/var/lib/${PN}"
newtmpfiles "${S}/contrib/${PN}.tmpfiles" "${PN}.conf"
dodoc README.md
default
}
pkg_postinst() {
chown gonic:gonic "${EPREFIX}/var/lib/${PN}"
chown gonic:gonic "${EPREFIX}/var/log/${PN}"
chmod 750 "${EPREFIX}/var/log/${PN}"
tmpfiles_process "${PN}.conf"
optfeature "Running in jukebox mode" media-video/mpv
optfeature "Transcoding audio" media-video/ffmpeg[encode,libsoxr,mp3,opus]
einfo ""
einfo "gonic presents an HTTP server for the admin interface. The default"
einfo "user/pass is admin/admin. The web UI listens on 127.0.0.1:4747. It's"
einfo "highly recommended to use a reverse proxy to serve the admin interface"
einfo "via HTTPS or to configure a TLS certificate for the service."
einfo ""
if ! use systemd; then
ewarn ""
ewarn "gonic currently does not self clean it's transcoding cache directory."
ewarn "While there is a tmpfiles config included with the install, on hosts"
ewarn "with long uptimes users may want to consider scheduling a cron job"
ewarn "to call systemd-tmpfiles periodically to avoid running out of disk space."
ewarn ""
fi
}