-# portage: enable doc and gentoo-dev
+#--------#
+# Gentoo #
+#--------#
sys-apps/portage doc gentoo-dev
-# kernel: use savedconfig over initramfs
+#---------------#
+# Kernel & Boot #
+#---------------#
sys-kernel/gentoo-kernel savedconfig -initramfs
sys-kernel/linux-firmware -initramfs
sys-firmware/intel-microcode -initramfs
-
-# systemd: use systemd-boot
sys-apps/systemd boot kernel-install
sys-kernel/installkernel systemd-boot
-# fuse: needs suid
-sys-fs/fuse suid
-
-# sudo: use offensive
-app-admin/sudo offensive
-
-# nm: disable wireless extensions (obsolete)
+#---------#
+# Network #
+#---------#
+#---- wext are deprecated ---#
net-misc/networkmanager -wext
-
-# ppp: disable gtk frontend
+#---- avahi printer discovery ---#
+net-print/cups zeroconf
+app-misc/ca-certificates cacert
+dev-libs/nss cacert
+gnome-extra/nm-applet appindicator
net-dialup/ppp -gtk
+net-misc/inetutils telnet traceroute whois ftp
-# cups: enable avahi printer discovery
-net-print/cups zeroconf
+#-----------#
+# Languages #
+#-----------#
+net-libs/nodejs npm
+dev-lang/zig doc
+dev-lang/rust system-llvm
-# libpcre: enable jit
+#---------#
+# Various #
+#---------#
dev-libs/libpcre jit
dev-libs/libpcre2 jit
+sys-fs/fuse suid
+app-admin/sudo offensive
-# ca-certificates: include certs from CAcert
-app-misc/ca-certificates cacert
-dev-libs/nss cacert
-
-# libreoffice: use gtk3 (gtk4 requires X for some reason)
-app-office/libreoffice gtk3
+#---------#
+# Desktop #
+#---------#
-# transmission
-net-p2p/transmission appindicator cli gtk
-# inetutils: basic inet utils
-net-misc/inetutils telnet traceroute whois ftp
-# hexchat
-net-irc/hexchat gtk lua libcanberra
-
-# nodejs: enable npm
-net-libs/nodejs npm
+# +-----------+
+# | Utilities |
+# +-----------+
+gnome-extra/yad -webkit
-# emacs: enable gui with gtk
-app-editors/emacs gui gtk
-# emacs: enable tree-sitter support
-app-editors/emacs tree-sitter
-# emacs: enable support for various image formats
-app-editors/emacs svg webp gif imagemagick png
-# emacs: enable builtin xml parsing
-app-editors/emacs libxml2
-# emacs: enable SQL support (required by org-roame)
+# +-------------+
+# | Development |
+# +-------------+
+app-editors/emacs gui gtk tree-sitter source svg webp gif imagemagick png libxml2 source
+#--- SQL support (required by org-roam)
app-editors/emacs sqlite
-# emacs: enable JIT compilation for .el files
+#--- jit
app-editors/emacs jit
sys-devel/gcc jit
-# emacs: third party support
+#--- third party programs
net-mail/notmuch emacs
app-crypt/pinentry emacs
dev-libs/protobuf emacs
dev-util/pkgcheck emacs
app-admin/eselect emacs
-# zig: fetch the documentation for offline use
-dev-lang/zig doc
-
-# rust: use system-llvm
-dev-lang/rust system-llvm
-
-# mozilla: use system libraries, hwaccel
-www-client/firefox system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-pipewire system-webp hwaccel
-mail-client/thunderbird system-av1 system-harfbuzz system-jpeg system-libevent system-librnp system-libvpx system-webp system-pipewire hwaccel
-
-# droidcam: enable gtk3 frontend
-media-video/droidcam gtk
-dev-libs/libdbusmenu gtk3
+# +----------+
+# | Internet |
+# +----------+
+www-client/firefox system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-pipewire system-webp
+www-client/firefox hwaccel
+mail-client/thunderbird system-av1 system-harfbuzz system-jpeg system-libevent system-librnp system-libvpx system-webp system-pipewire
+mail-client/thunderbird hwaccel
+net-p2p/transmission appindicator cli gtk
-# mpv: enable CLI tools and archive support
+# +------------+
+# | Multimedia |
+# +------------+
media-video/mpv tools archive
-
-# yad: disable webkit (brings webkit-gtk)
-gnome-extra/yad -webkit
-
-# pipewire/pulseaudio
media-video/pipewire echo-cancel extra jack-sdk v4l sound-server flatpak pipewire-alsa
media-libs/libcanberra pulseaudio
+media-video/droidcam gtk
+dev-libs/libdbusmenu gtk3
-# inkscape: enable support for newer svg2 format
+# +--------+
+# | Office |
+# +--------+
+app-office/libreoffice gtk3
media-gfx/inkscape svg2
-# nerdfonts:
+# +-------+
+# | Fonts |
+# +-------+
media-fonts/nerdfonts bigblueterminal terminus liberationmono noto inconsolata hack
-# xfce-meta: enable image, svg, power management, archive, calendar and pulseaudio support
+# +------+
+# | XFCE |
+# +------+
xfce-base/xfce4-meta image svg upower archive calendar pulseaudio
xfce-base/xfce4-settings libcanberra -xklavier
-# xfce4-pulseaudio-plugin: disable keybinder (doesn’t work on wayland)
xfce-extra/xfce4-pulseaudio-plugin libcanberra -keybinder
-# xfdesktop: enable X support (doesn't build properly without it)
+xfce-base/libxfce4ui system-info
+#--- xfdesktop needs X to build properly
xfce-base/xfdesktop X
xfce-base/libxfce4ui X
xfce-base/libxfce4windowing X
-# xfce4ui: enable system-info menu in settings
-xfce-base/libxfce4ui system-info
-# labwc: enable Xwayland
+# +---------+
+# | Wayland |
+# +---------+
gui-wm/labwc X
gui-libs/wlroots X
-# wlroots: enable xcb-errors (better error reporting for Xwayland)
gui-libs/wlroots xcb-errors
-
-# swaybg: enable gdk-pixbuf (allows more image formats)
gui-apps/swaybg gdk-pixbuf
-# nm-applet: enable appindicator support
-gnome-extra/nm-applet appindicator
-
-# X: enable X support for apps still running under X
+# +-----+
+# | X11 |
+# +-----+
sys-apps/dbus X
media-libs/libepoxy X
media-libs/libglvnd X