# 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 # Wrapper that sources bashrc.d snippets (only if no bashrc exists) insinto /etc/portage newins data/kernel/hooks/bashrc-wrapper bashrc 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 }