From Gentoo Wiki
Jump to:navigation Jump to:search

My personal list of Gentoo stuff to do in order to get Gentoo stuff done.


Anything in the Todo category, but especially Open discussions in the Handbook namespace.

Better color pallet

Create 16-color pallet for a Gentoo themed shell. Base colors off official Tyrian color pallet. Used for color calculations.

#54487A (Gentoo purple) #61538D (Gentoo purple light) #6E56AF (Gentoo purple light2) #DDDAEC (Gentoo grey) #DDDFFF #73D216 (Gentoo green) #D9534F (Gentoo red)
#000000 ([new] black - 0) #000000 ([new] lightred - TODO 1) #000000 ([new] lightgreen - TODO 2) #d2d94f ([new] yellow - based off Gentoo red - triadic 3) #0000FF ([new] lightblue - TODO 4) #FF00FF ([new] lightmagenta - TODO 5) #FFFFFF ([new] highwhite - No connection - 6) #808080 ([new] grey - No connection - 9) #D9534F (red - Tyrian official? - 10) #73D216 (green - Tyrian official? - 11) #7a5a48 ([new] brown - based off Gentoo purple - split complementary 12) #564fd9 ([new] blue - based off Gentoo red - triadic - 13) #d21674 ([new] magenta - based on Gentoo green - complementary - 14) #16cfd2 ([new] cyan - based off Gentoo green - tetradic - 15) #C0C0C0 ([new] white - No connection)
#d24516 ([new] orange - based off Gentoo red - triadic - Extra)
  1. 48627a

Typical shell color pallet is something like:

#change default colors
echo -en "\e]P0000000" #black 1
echo -en "\e]P1FF0000" #lightred 2
echo -en "\e]P200FF00" #lightgreen 3
echo -en "\e]P3FFFF00" #yellow 4
echo -en "\e]P40000FF" #lightblue 5
echo -en "\e]P5FF00FF" #lightmagenta 6
echo -en "\e]P600FFFF" #lightcyan 7
echo -en "\e]P7FFFFFF" #highwhite 8
echo -en "\e]P8808080" #grey 9
echo -en "\e]P9800000" #red 10
echo -en "\e]PA008000" #green 11
echo -en "\e]PB808000" #brown 12
echo -en "\e]PC000080" #blue 13
echo -en "\e]PD800080" #magenta 14
echo -en "\e]PE008080" #cyan 15
echo -en "\e]PFC0C0C0" #white 16

Create community member equivalent of developer form

Members of our community would like to have "profile" pages on our wiki like our official developers do. This todo item tracks 'feature' improvement for our wiki. The following should be created to replace {{InfoBox user}}; likely cloned from existing developer resources:

Be sure to add the category Category:Users with profiles.

Moribund project discovery

Write SMW query to discover projects that have no leads, members, or subproject. These projects should probably be retired.

Try using #ask with #if. Check out or wildcards and in combination with CURRENTYEAR, CURRENTMONTH, CURRENTDAY magic words.

It maybe be necessary to use

TODO: Add "years, months, and days" overdue row. Need to be able to query just the YEAR, MONTH, DAY from the date datatype to make this happen.

Query moved here: Project:Gentoo/GLEP 39 election date non-compliant projects.

Set Has property description special property on existing Has properties

[[Has property description::Is a property that...@en]]

Ease election burden

Many projects are behind on the elections. As presently defined, projects must re-elect a lead each year. In the past, Michał Górny (mgorny) has taken it upon himself to create a tracker bug with many sub-entries to track projects that are behind on elections. While was was a good effort that should not go unnoticed, it did not seem to solve the problem or motivate projects to stay on top of project election updates. Even my own project(s) were years behind (mainly because I didn't have a good situation managing my Gentoo email inbox).

TODO: Link bug where idea is discussed.

The following are a couple of proposals to help fix this:

  1. Amend or revise GLEP 39 to make it optional to perform a yearly election.
    • Make election date self-update (roll over) unless a project member calls for a vote.
    • Remove the requirement for annual project election; during any period past one year any existing project member has the option to call for a vote in order to appoint a new or reappoint the existing project lead(s).
  2. Create automated service with info based off of the official project election data (SMW) export that will generate an email based off a templated message.
    • Message would be emailed out two weeks before the annual election date and would include current project lead, current project members... and would ask the team to vote, then update the wiki page with the new date and (new?) lead (if applicable).
  3. Create a website (elections.g.o or voting.g.o) that would handle elections.
    • This site could be linked from the specific project page on the wiki.
    • Site would need the ability to automatically update wiki project pages based off voting results when the election period has closed.
    • Site would need to authenticate and identify developers.
    • An automated email service could be hooked up that delivers a message to defined project email address to kick off voting two weeks before the annual election date lapses.
  4. Create a script on dev.g.o that handles project elections (could votify be extended for this purpose?)
    • Script would need the ability to automatically update wiki project pages based off voting results when the election period has closed.
    • Pro: Authentication and identification is handled by dev.g.o.
    • Script would need a fall back path if no votes were received: I propose leaving the existing project structure as-is and automatically updating the election date. This would bring each project into compliance with how GLEP 39 without having to amend or modify the GLEP.
    • Write up documentation on script somewhere on the wiki and provide a link on each "project box" on the each respective project page.

Last project election summary page

Overlay template

The GURU community ebuild repository is official and should be supported by a template here on the wiki.

Create an {{Overlay}} template sourcing repositories from

Also, repos.g.o needs to be updated to current terminology. Layman is no longer the ebuild repo management tool of choice and is largely unmaintained.

Create Gentoo distfiles mirror docker image

Create Gentoo distfiles mirror docker image, create from a docker file?

Include a separte volume for the distfiles directory?

Protect Council and Trustee election forms, properties, and templates

It would be wise to protect council elections forms, properties, and templates:

  • {{Nominee}}
    • Nominee properties: Has Name, Has Acceptance State, Has Linked Resource, Is Council Member, Is Trustee, Is Comrel Member, Is QA Member
  • {{Election}}
    • Has Title, Has ID, Has Election Official, Has Election Infra Contact, Has Election Cutoff Date, Has Nomination Start Date, Has Start Date,
  • Other downstream properties (research)?


Catch up on all open discussions in the Handbook namespace

As I continue to clean up our docs in 2022, I am working to catch up with and hopefully close out all open discussions in the Handbook: namespace. Will move this section to Completed tasks when caught up to this point. Aiming for January, 2021 and plan to tackle (at least) one discussion per week, but hopefully multiple per day.

Project lead elections improvement

Provide automagic calculation based on queried project election date and current time to provide visual cue or other notification that the project needs to hold re-election... mgorny has laid the framework: Project:Gentoo/Project Lead Elections.

Gentoo handbook development and maintenance

Fork and provide updates to Sven Vermeulen (SwifT) 's gensetup script. This will help with Handbook testing and development.

Dev with KVM/QEMU

  1. Verify system firmware has virtualization support enabled; setup if necessary.
  2. Verify KVM support is available in the system's kernel.
  3. Verify QEMU has been installed and configured properly for the appropriate arch(es).
  4. Create testing disks:
    • MBR disk on legacy x86 BIOS
    • MBR with hybrid GPT on legacy x86 BIOS.
    • GPT on legacy x86 BIOS.
    • GPT on x86_64 EFI.
  5. Create a VM.
    • Snapshot VM

Dev with Docker

The following repo needs copied to gitweb.g.o if it is missing:

  1. Get the tools:
    • root #emerge --ask app-containers/docker app-containers/docker-cli
  2. Start the service(s):
    • OpenRC:
      • root #rc-service docker start
        root #rc-service registry start
    • systemd:
      • root #systemctl start docker.service
        root #systemctl start containerd.service
  3. When running from a Gentoo system:
    • Get a fresh copy of the gentoo:: ebuild repository:
      • root #emaint sync --repo gentoo
    • Pull the stage3 image:
      • user $docker pull gentoo/stage3:latest
    • Run the a container, sharing in a copy of the freshly updated gentoo:: repo, and mounting the /tmp (512 MiB) and /var/db/portage (16 GiBs) directories in memory (saves SSD writes). Adjust or remove these options if the host system does not have enough memory.
      • user $docker run --volume=/var/db/repos/gentoo:/var/db/repos/gentoo --tmpfs /run:exec --tmpfs /tmp:size=524288k --tmpfs /var/tmp/portage:exec,size=16777216k --tty=true --interactive=true --privileged --workdir="/" gentoo/stage3 bash #Todo: PORTAGE_TMPFS should be owned by portage:portage and 755
      • Alternatively, the mount command can be used, however an extra remount step is necessary in the container:
      • user $docker run --volume=/var/db/repos/gentoo:/var/db/repos/gentoo --mount type=tmpfs,tmpfs-size=128MB,destination=/run --mount type=tmpfs,tmpfs-size=512MB,destination=/tmp --mount type=tmpfs,tmpfs-size=16GB,destination=/var/tmp/portage --tty=true --interactive=true --privileged --workdir="/" gentoo/stage3:latest bash
        • When in the container, noexec must be removed from the /var/tmp/portage and /run tmpfs mounts:
          root #mount --options remount,exec /var/tmp/portage
        • root #mount --options remount,exec /run
  4. When running from a non-Gentoo system, it is easy to also pull down a gentoo:: snapshot and mount into the container as a volume. For example:
    • Pull the images:
      • user $docker pull gentoo/portage:latest
        user $docker pull gentoo/stage3:latest
    • Create a volume:
      • user $docker create --volume=/var/db/repos/gentoo --name 2022-02-07-gentoo-ebuild-repo gentoo/portage:latest /bin/true
    • Run the container with the volume attached
      • user $docker run --volumes-from=2022-02-07-gentoo-ebuild-repo --mount type=tmpfs,tmpfs-size=512MB,destination=/tmp --mount type=tmpfs,tmpfs-size=16GB,destination=/var/tmp/portage --tty=true --interactive=true --privileged --workdir="/" gentoo/stage3:latest bash

When finished hacking, clean up the mess.

  1. Deletes all containers (without confirmation prompt):
    • user $docker container prune --force
  2. Deletes all volumes (without confirmation prompt):
    • user $docker volume prune --force
  3. Deletes all images without at least one container associated to them (re-download will be necessary):
    • user $docker image prune --all --force

Vocational OSS maintainer

TODO: Explain how a Gentoo developer could approach vocational full time (considered 40 hours a week) or even part time (considered at 20 hours but up to 30 hours a week) work on Gentoo.


Audit, compliance, hardening, security, and risk assessment, etc. directly relates to the amount of time a project dedicates these various fields. In Gentoo, a security project exists to cite and inform endpoint systems of vulnerabilities related to package versions and (occasionally) security issues.

Funding (money) and time go hand-in-hand. Most developers work a primary/day job to put food on their tables and care for families. Gentoo is typically a secondary job, or hobby function. Due to this, Gentoo ends up getting the leftover daily bandwidth and minimal compute time in a developer's mind.

Really good blog entry along this theme can be found here:


Use GSOC as an entry point and introduction into the Gentoo ecosystem on a certain project.

Funding options

The following list are some of the methods used by open source developers to fund their efforts improving the quality of software offered (most typically) for no money:

Other options include donating directly to the developer via crypto wallet address for various services, which some developers may prefer, however this generally involves transactional network fees and/or cash out conversion fees into national/fiat currencies.

Post-rsync world Handbook improvements

Looks like there are a couple of URIs available to sync the Gentoo ebuild repository via git:

Notes from Sam James (Sam) : Project:Portage/Repository_verification#git and Portage_Security#git-mirror_repositories

It would not be terribly bad idea to add an alternative section in the handbook to sync via git instead of rsync. One blocking issue is that Portage will depend upon git for runtime support... just as it depends upon rsync for runtime syncing 'out of the box' (stage) file. The difference here is that rsync is included in the system set, whereas git is not.

IMO, Portage "sync system" dependencies should be better defined in the ebuild itself with new runtime USE flags such as cvs, git, mercurial, svn, +rsync, and webrsync. TODO: Look at adding bitkeeper support (both to Gentoo and to Portage sync types). (See also: bug #750827)

In order to obtain a copy of of the Gentoo ebuild repository in order to install git, emerge-webrsync before creating the /etc/portage/repos.conf directory, obtain git, create the directory...

root #emerge-webrsync
root #emerge dev-vcs/git
root #cd /var/db/repos/gentoo
root # # emulate shallow clone
root #mkdir --parents /etc/portage/repos.conf

Then create the following file and emaint sync -r gentoo.

FILE /etc/portage/repos.conf/gentoo.confGentoo ebuild repository sync via git
main-repo = gentoo

location = /var/db/repos/gentoo
sync-type = git
sync-uri =
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 24
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4

# for daily squashfs snapshots
#sync-type = squashdelta
#sync-uri = mirror://gentoo/../snapshots/squashfs
root #emaint sync -r gentoo

Reproducible builds

Also look at dev-util/diffoscope.


Wikidata implementation.

See {{Wikidata}}.

Link developer nickname to developer map on www.g.o

This will require some investigation into the possibility of linking a name to a coordinate on www.g.o.

Preferable to link to a location with using an id tag such as #nickname on the ending. The link would originate the from the LDAP generated location and point to the map.

Convert home directories to systemd homed

homed support became available in Gentoo around 2021-02-01[1].

Follow the upstream guide. Determine how it applies to our users and the systemd article:

Rebuild sys-auth/pambase and sys-apps/systemd with homed support. systemd will also require cryptsetup as well. Alternatively, add USE="cryptsetup homed" in /etc/portage/make.conf, which may help prevent additional USE flag maintenance in the future.

FILE /etc/portage/package.use/systemd-homedAdd homed support to pambase and systemd
sys-auth/pambase homed

# The following REQUIRED_USE flag constraints are unsatisfied:
# homed? ( cryptsetup )
sys-apps/systemd cryptsetup homed
root #emerge --ask --update --changeduse @world

Enable the systemd-homed service:

root #systemctl enable --now systemd-homed

Unless specifically assigned at user creation time, most single user Gentoo systems will have the primary user's ID set as 1000. Very using the following commands (according to upstream):

user $getent passwd larry
user $getent group 1000

Create backups of important files to be modified:

root #cp /etc/passwd /etc/passwd.bak
root #cp /etc/shadow /etc/shadow.bak
root #cp /etc/gshadow /etc/gshadow.bak
root #cp /etc/passwd /etc/passwd.bak

Backup the user(s) home directories:

root #cp --archive --recursive /home/larry /home/larry.saved

(Re)create the home directory (optionally entering the same password as the user account had before the migration):

root #homectl create larry --uid=1000 --real-name="Larry the Cow" --member-of wheel,audio,docker,kvm,video,plugdev,portage,users,vboxusers,libvirt
🔐 Please enter new password for user foobar:
🔐 Please enter new password for user foobar (repeat):

Move the old files into the new home directory:

root #homectl with larry -- rsync -aHAXv --remove-source-files /home/larry.saved/ .

When the rsync command finishes, all files will be moved into the new home directory; only empty directories will be left inside the /home/larry.saved location. It can be finally removed with:

user $rmdir /home/larry.saved

Display managers


Although no notification is displayed on the greeter, Gnome Display Manager will prompt users to login twice...

For the time being, the best answer as to why is likely describing in bug #808993. One password to authenticate the user via, which will leave the home directory unactivated. The password is needed a second time to activate the home directory (via If the user does not enter the password a second time (presses Enter past the second prompt; needs testing to confirm), the user will login, but HOME will be set to /, which is not expected or desired.

auth	[success=2 default=ignore] nullok try_first_pass
auth	[success=1 default=ignore]

Manual mount and repair

In case a filesystem is marked as dirty, which can happen due to disk corruption, the filesystem can be manually mounted and fsck'd. Use homectl inspect <username> in order to determine filesystem is dirty.

root #losetup -fP /home/larry.home
root #cryptsetup open /dev/loop0p1 home-larry
root #btrfs check /dev/mapper/home-larry

If the check completes successfully, then the device can be mounted manually and operated on:

root #mount /dev/mapper/home-larry /mnt/rescue

Moving a home directory to a new system

TODO: Verify both private.local and public.local files are needed for proper home migration...

Home directories can be moved between systems by the following steps.

  1. Copy the home directory from the homed directory (/home by default) on the old system to the homed directory on the new system.
  2. Copy the private.local and public.local files found under the /var/lib/systemd/home directory on the old system to the new system.
  3. Restart the systemd-homed service on the new system.
    root #systemctl restart systemd-homed
  4. Login on the new system.
Although moving home directories are portable with this approach, moving the /var/lib/portage/world file and Portage configuration files under the /etc/portage directory may be needed to ensure all applications used / references in the users' home directory are available on the system.

pam.d configuration changes

With the homed flag set on pambase, three files change to add homed support. This section simply provides an overview of what changes are needed in the pam files in order to properly integrate authentication when using homed.

The /etc/pam.d/system-services file:

FILE /etc/pam.d/system-services
auth		sufficient
account		include		system-auth
session         optional
session		required
session		required
session         [success=1 default=ignore]
session		required

The /etc/pam.d/passwd file.

FILE /etc/pam.d/passwd
auth		sufficient
auth		include		system-auth
account		include		system-auth
password	include		system-auth
password	optional use_authtok

The /etc/pam.d/system-auth file.

FILE /etc/pam.d/system-auth
auth		required
auth		requisite preauth
auth		[success=2 default=ignore] nullok  try_first_pass
auth            [success=1 default=ignore]
auth		[default=die] authfail
account         [success=1 default=ignore]
account		required
account         required
password	required config=/etc/security/passwdqc.conf
password        [success=1 default=ignore]
password	required try_first_pass use_authtok nullok sha512 shadow
session		required
session		required
session         [success=1 default=ignore]
session		required


Home directory fails to mount: not enough free space

When using a underlying filesystem such as btrfs and experiencing mount issues after filling the home directory with too many files, then...

Activate luks discard offline support:

user $homectl update larry --luks-discard=true --luks-offline-discard=true

Now attempt to activate the home directory:

user $homectl activate larry

Create a community maintained disk space document

See this discussion. Handbook should reference basic disk space requirements, whereas community page can document in more specificity how much space is necessary for typical installations on a per-profile basis.

  • Profile space requirements
  • distfiles space requirements (btrfs) as of 2021/09/22: 282G
  • gentoo repository space requirements (btrfs) as of 2021/09/22: 562M

Should be able to hook this up to an automated export available via HTTPS somehow...

Since "desktop" profiles are becoming available, it should be possible nab uncompressed filesystem sizes from RelEng builds, this data can be used to generate a table that can be used on the main site.... alternatively link to my ~/dev space on pecker.


Packages required to be installed in Termux (GitHub) for Gentoo Prefix to run with Termux:

root #pkg


Packages required to be installed in Cygwin for Gentoo Prefix/Cygwin to run:

root #wget gcc-core make


  • Devmanual should be added to the sites drop down menu...

Low disk space output

This message is also caused by low disk space as well; when there is not enough space in the ebuild's root build directory (WORKDIR) to unpack the package.

 * Messages for package virtual/jpeg-0-r3:

 * The ebuild phase 'unpack' has exited unexpectedly. This type of behavior
 * is known to be triggered by things such as failed variable assignments
 * (bug #190128) or bad substitution errors (bug #200313). Normally, before
 * exiting, bash should have displayed an error message above. If bash did
 * not produce an error message above, it's possible that the ebuild has
 * called `exit` when it should have called `die` instead. This behavior
 * may also be triggered by a corrupt bash binary or a hardware problem
 * such as memory or cpu malfunction. If the problem is not reproducible or
 * it appears to occur randomly, then it is likely to be triggered by a
 * hardware problem. If you suspect a hardware problem then you should try
 * some basic hardware diagnostics such as memtest. Please do not report
 * this as a bug unless it is consistently reproducible and you are sure
 * that your bash binary and hardware are functioning properly.

It would be nice to add some checks to Portage in order to better notify the user of the low space issue. At minimum add a line to the text above that mentions not enough space in WORKDIR.

Bound to fail

Using too high a MAKEOPS value and --jobs set to 4 (or some other N), is a bad idea when compiling source in tmpfs or when Gentoo has been allocated only a small partition to PORTAGE_TMPDIR. In the example below the following default values are set in make.conf:

FILE /etc/portage/make.conf
EMERGE_DEFAULT_OPTS="--jobs=4 --keep-going=y"
root #emerge --update --deep --newuse --changed-deps=y --with-bdeps=y --verbose --keep-going=y --tree --backtrack=2000 --verbose-conflicts @world
>>> Emerging (1 of 205) www-client/firefox-72.0.2::gentoo
>>> Emerging (2 of 205) mail-client/thunderbird-68.4.2::gentoo
>>> Emerging (3 of 205) www-client/chromium-80.0.3987.87::gentoo
>>> Emerging (4 of 205) app-office/libreoffice-

The previous example is bound to result in job failure output similar to the following:

>>> Emerging (3 of 205) www-client/chromium-80.0.3987.87::gentoo
>>> Jobs: 0 of 205 complete, 4 running            Load avg: 21.0, 29.6, 38.7Exception in callback PipeLogger._output_handler(13)
handle: <Handle PipeLogger._output_handler(13)>
Traceback (most recent call last):
  File "/usr/lib64/python3.6/asyncio/", line 145, in _run
  File "/usr/lib64/python3.6/site-packages/portage/util/_async/", line 124, in _output_handler
OSError: [Errno 28] No space left on device
> /usr/lib64/python3.6/site-packages/portage/util/_eventloop/>None
-> pdb.set_trace()

Why does this happen?

The above occurs as explained in the OSError output from Portage: OSError: [Errno 28] No space left on device

In other words, space runs out in the directory Portage uses for compilation (PORTAGE_TMPDIR).

The fastest solution

Run CTRL+c to close the Python interpreter, then do whatever is appropriate to obtain more disk space. Typically this can look like running eclean and purging any failed compilations from Portage's TMPDIR:

root #eclean -d distfiles
root #eclean -d distfiles
root #rm -rfv /var/tmp/portage/*

Finally, resuming the emerge with a smaller MAKEOPTS or jobs value (or both!) should work around the build failure:

root #MAKEOPTS="-j8" emerge --resume --jobs=1

Building stages with clang

Reddit discussion here.

This Debian sites keeps a nice list of packages that are successfully built with LLVM/Clang.


Captive portals

Explain how to access Cisco (and other annoying) captive portals that are typically present when using (at least) Chromium/FireFox and NetworkManager.

Explain how to connect to a captive portal while booted to a Gentoo admin or minimal installation media to avoid no network problems.[2]

Nice to be able to do this via CLI as well... what tools or techniques can we come up with in order to help our community get past captive portals

Here are some links for research:


Sometimes attempting to browse to any site without using HTTPS will help trigger the captive portal to load.

Add information on enabling FreeSync on AMDGPU

Resolve PPC bootloader installation instructions

Handbook probably needs to be migrated from yaboot to GRUB2. See discussion on Handbook_Talk:PPC/Installation/Bootloader.

Pending testing with VOID Linux on a separate HDD. 11/16/2020

Add networking setup example to the Handbooks using ip command

Transision the Handbook to use the ip command with CIDR format rather than ifconfig.

Finish new Gentoo wallpapers

  • Add new wallpapers to www.g.o. and create a package for quick and easy installation on Gentoo.
  • Work on getting a resize script for common supported display resolutions. Start with 4K, resize down as appropriate per form factor.
    • Consider mobile device resolutions. What are they?
  • Upload wallpapers sources (with attribution) to maffblaster's GitHub.
    • Cut releases on GitHub.
  • Write imagemagick resize script for end user reproducibility?

Terminology update: Overlay -> ebuild repository

Figure out how to address the following articles (man pages will also need updated):

Layman references:

  • PORTDIR_OVERLAY variable.
  • layman-overlay-maker command.

Continue work on:

Re-add recentchanges bot to #gentoo-wiki


  • Research mw-bot (source) - Done! Disqualified. No releases in three years. Written to C#. Did not reply to (opened issue). Presumed dead/inactive.
  • sopel

Code for a similar recentchanges output:

$wiki $encoded_wiki_page $action $fullurl - User: $username - Summary: $summary

TODO: write a module to watch recent changes for sopel. Broadly see and specifically Wikipedia:CREATEBOT.

Alternatively investigate

In Unix, what do some obscurely named commands stand for?

Link this somewhere:

Someone please work on these. Someone. ANYONE?! PLEASE!!

  • GitLab - Clean up article: meld it into proper article layout/formatting according to wiki Guidelines, review for correctness.
    • Work on bringing GitLab to Gentoo. This would be of use to infra as a GitHub fall back (since GitHub isn't nicely open source).
    • Start with a Gentoo-based container (if necessary), and build from there.