You can ask Portage to use ebuilds that are not officially available through the
Portage tree. Create a new directory (for instance
/usr/local/portage) in which you store the 3rd-party ebuilds. Use
the same directory structure as the official Portage tree!

Then define PORTDIR_OVERLAY in /etc/portage/make.conf and have it
point to the previously defined directory. When you use Portage now, it will
take those ebuilds into account as well without removing/overwriting those
ebuilds the next time you run emerge --sync.

For the powerusers who develop on several overlays, test packages before they
hit the Portage tree or just want to use unofficial ebuilds from various
sources, the app-portage/layman package brings you
layman, a tool to help you keep the overlay repositories up to date.

First install and configure layman as shown in the Overlays Users' Guide, and add your
desired repositories with layman -a <overlay-name>.

Suppose you have two repositories called java (for the in-development
java ebuilds) and entapps (for the applications developed in-house for
your enterprise). You can update those repositories with the following
command:

In some cases you want to configure, install and maintain software yourself
without having Portage automate the process for you, even though Portage
can provide the software titles. Known cases are kernel sources and nvidia
drivers. You can configure Portage so it knows that a certain package is
manually installed on your system. This process is called injecting and
supported by Portage through the
/etc/portage/profile/package.provided file.

For instance, if you want to inform Portage about
gentoo-sources-2.6.11.6 which you've installed manually, add the
following line to /etc/portage/profile/package.provided: