gpkg-9999nbdy_overlay
download
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CRATES=""
RUST_MIN_VER="1.75.0"
inherit cargo git-r3 systemd xdg-utils
DESCRIPTION="Graphical package manager for Gentoo Linux (GTK4/libadwaita Portage frontend)"
HOMEPAGE="https://git.xenonet.cc/N3oTraX/gpkg"
EGIT_REPO_URI="https://git.xenonet.cc/N3oTraX/gpkg.git"
EGIT_BRANCH="develop"
LICENSE="GPL-2"
SLOT="0"
IUSE="+sourceview +vte btrfs dracut appindicator grub2 kerneltools limine refind systemd systemd-boot"
REQUIRED_USE="
kerneltools? (
^^ ( limine grub2 systemd-boot refind )
dracut
)
btrfs? ( kerneltools )
dracut? ( kerneltools )
limine? ( kerneltools )
grub2? ( kerneltools )
systemd-boot? ( kerneltools )
refind? ( kerneltools )
"
DEPEND="
>=gui-libs/gtk-4.12:4
>=gui-libs/libadwaita-1.4:1
>=dev-libs/glib-2.76:2
sys-apps/dbus
vte? ( >=gui-libs/vte-0.74:2.91-gtk4 )
sourceview? ( >=gui-libs/gtksourceview-5.10:5 )
"
RDEPEND="
${DEPEND}
sys-apps/portage
app-portage/gentoolkit
app-portage/eix
sys-auth/polkit
kerneltools? ( || ( sys-apps/systemd sys-apps/systemd-utils[kernel-install] ) )
dracut? ( sys-kernel/dracut )
grub2? ( sys-boot/grub:2 )
limine? ( sys-boot/limine )
systemd-boot? ( sys-apps/systemd[boot] )
refind? ( sys-boot/refind )
btrfs? ( app-backup/snapper )
appindicator? ( gnome-extra/gnome-shell-extension-appindicator )
"
BDEPEND="
virtual/pkgconfig
"
QA_FLAGS_IGNORED="
usr/bin/gpkg
usr/bin/gpkg-daemon
"
src_unpack() {
git-r3_src_unpack
cargo_live_src_unpack
}
src_configure() {
cargo_src_configure
}
src_compile() {
local myfeatures=(
$(usev vte)
$(usev sourceview)
$(usev kerneltools)
$(usev limine)
$(usev grub2)
$(usev systemd-boot)
$(usev refind)
$(usev btrfs)
$(usev dracut)
)
cargo_src_compile
}
src_test() {
cargo_src_test --workspace
}
src_install() {
# Binaries
dobin "$(cargo_target_dir)/gpkg"
dobin "$(cargo_target_dir)/gpkg-daemon"
# D-Bus system bus config (required for daemon to claim bus name)
insinto /etc/dbus-1/system.d
doins data/dbus/org.gentoo.PkgMngt.conf
# D-Bus activatable service (auto-start daemon on first D-Bus call)
insinto /usr/share/dbus-1/system-services
doins data/dbus/org.gentoo.PkgMngt.service
# Polkit policy (authorization for privileged operations)
insinto /usr/share/polkit-1/actions
doins data/polkit/org.gentoo.pkgmngt.policy
# Desktop file
insinto /usr/share/applications
doins data/org.gentoo.PkgMngt.desktop
# Icons — all sizes (PNG) + scalable SVGs + systray status icons
insinto /usr/share/icons
doins -r data/icons/hicolor
# AppStream metainfo
insinto /usr/share/metainfo
doins data/org.gentoo.PkgMngt.metainfo.xml
# Locales
local lang
for lang in de es fr it ja pt_BR ru zh_CN; do
insinto "/usr/share/locale/${lang}/LC_MESSAGES"
newins "po/${lang}.mo" gpkg.mo
done
# Kernel tools (USE=kerneltools)
if use kerneltools; then
exeinto /usr/lib/kernel
doexe data/kernel/scripts/compile-kernel.sh
exeinto /usr/lib/kernel/install.d
use limine && doexe data/kernel/hooks/95-limine-gentoo.install
insinto /etc/kernel
doins data/kernel/configs/auto-compile.conf
doins data/kernel/configs/default-type
# Portage bashrc hook for auto-compile on emerge *-sources
insinto /etc/portage/bashrc.d
newins data/kernel/hooks/portage-bashrc 50-gpkg-kernel.sh
# Portage bashrc hook for btrfs snapshots on emerge (USE=btrfs)
# Prefixe 05 -> source avant 50 ; definit les wrappers de phase qui
# appellent _kernel_* (compilation) ET _snapper_* (snapshots).
use btrfs && newins data/kernel/hooks/portage-snapper 05-btrfs-snapshot.sh
# Wrapper that sources bashrc.d snippets (only if no bashrc exists)
insinto /etc/portage
newins data/kernel/hooks/bashrc-wrapper bashrc
# limine-snapshots: entrees snapshot dans limine.conf (USE=btrfs+limine)
if use btrfs && use limine; then
newbin data/kernel/scripts/limine-snapshots.sh limine-snapshots
fi
keepdir /var/log/kernel-compile
fi
# Systemd service (with hardening)
if use systemd; then
systemd_dounit systemd/gpkg-daemon.service
fi
# OpenRC init script (always install, even with systemd)
newinitd "${FILESDIR}/gpkg-daemon.initd" gpkg-daemon
newconfd "${FILESDIR}/gpkg-daemon.confd" gpkg-daemon
}
pkg_postinst() {
xdg_icon_cache_update
xdg_desktop_database_update
elog ""
elog "To start the gpkg daemon:"
elog ""
if use systemd; then
elog " systemctl enable --now gpkg-daemon"
else
elog " rc-update add gpkg-daemon default"
elog " rc-service gpkg-daemon start"
fi
elog ""
elog "Then launch the GUI: gpkg"
elog ""
if use kerneltools; then
elog "Kernel tools installed:"
elog " - Automatic kernel compilation hooks"
elog " - Kernel Conf tab in the GUI"
use limine && elog " - Limine bootloader integration"
use btrfs && elog " - Btrfs snapshot management"
elog ""
fi
}
pkg_postrm() {
xdg_icon_cache_update
xdg_desktop_database_update
}