Skip to content

GoldenDrakeStudios/golden-drake-linux

Repository files navigation

Golden Drake Linux

Table of contents

About

Golden Drake Linux (GDL) is a custom version of Arch Linux designed for gaming and game development. Strictly speaking, GDL is not an independent distro: it's simply a convenient method for installing Arch with certain packages, configurations, and theming and thus it only utilizes the standard Arch repositories along with the Arch User Repository (AUR). GDL is a highly-modified fork of the Anarchy installer with additional inspiration from archdi-pkg, ArchLabs, Manjaro, and other sources. The installer ISO is built using Archiso and the installation process uses dialog for a visually appealing TUI (text-based UI, a.k.a., terminal UI).

GDL is a side project of indie game development studio Golden Drake Studios (GDS), with updates and support provided by GDS's founder, David C. Drake. We hope you'll enjoy it, provide constructive feedback, and support our ongoing work on this and other projects through Patreon, but please note that GDL is provided without any warranty and, if it doesn't offer what you're looking for, we recommend checking out another tried-and-true Arch installer, such as ArchLabs or an official Arch Linux ISO. For a more beginner-friendly Arch-based experience, check out Garuda Linux, EndeavourOS, or Manjaro. Looking beyond the Arch family, we can also recommend Fedora (inc. Spins and Labs), openSUSE, Debian, and certain Debian derivatives, such as Linux Mint Debian Edition (LMDE) and MX Linux.

(Please note that the acronym "GDL" can also refer to the GNOME Docking Library in other contexts.)

Features

Desktop environment (DE)

Four popular DEs, each lovingly customized for beauty and usability, are available during installation (follow the links for custom keyboard shortcuts and other details):

DE Screenshot
KDE Plasma, with SDDM as the display manager. Screenshot of GDL's KDE Plasma environment
GNOME, with GDM as the display manager. Screenshot of GDL's GNOME environment
Cinnamon, with LightDM as the display manager. Screenshot of GDL's Cinnamon environment
Xfce, with LightDM as the display manager. Screenshot of GDL's Xfce environment

If LightDM is your display manager, a secure "Guest Session" option is made available courtesy of lightdm-guest-account. This is useful when you want to let someone briefly use your computer while ensuring your system and data remain safe: a temporary guest user with limited capabilities is created when they log in, then deleted (along with all associated data) when they log out (the "Switch User" feature should not be used during the guest session as they won't be able to return to that session).

All DEs include a custom .bashrc file to provide the following while in a terminal:

  • A roll function for tabletop gaming or whenever random numbers are desired: type roll 1 20 for 1d20, roll 2 4 for 2d4, roll 3 6 for 3d6 (or just roll 3 as six-sided dice is the default), etc.
  • Functions for creating and extracting archive files: maketarxz, maketargz, makezip, and extract.
  • An mcd function for creating a directory and immediately moving into it.
  • Aliases to improve some basic commands, facilitate a few important tasks (yayup to check for Arch news before updating software, yaycleanup to remove old dependencies and cache files, updatemirrors, updategrub, reinstallgrub, etc.), and provide more convenient access to features of some of the fun terminal programs listed below.

Software

Category Details
Games
Game management
  • If Lutris (or another Wine-centric package, such as Bottles) is selected, GDL also installs a set of packages commonly required for various Windows apps/games, including prerequisites for Lutris-assisted installation of Blizzard Battle.net, providing access to Overwatch, World of Warcraft, Hearthstone, Starcraft II, Diablo IV, etc.
  • Steam, itch.io, Heroic, RetroArch, etc., can also be selected to provide even more access to an endless variety of games.
  • GameMode (inc. lib32-gamemode) is installed and configured for easy performance optimization via gamemoderun [app] (automatic for anything played through Lutris).
    • For systems with an NVIDIA graphics card plus another GPU, such as an Intel iGPU, GAMEMODERUNEXEC=prime-run is added to /etc/environment to activate PRIME render offload for any app run via gamemoderun [app], ensuring the NVIDIA card does all the heavy lifting for its graphical needs.
    • For graphically-intensive Steam games, add gamemoderun %command% to each game's Properties > General > Launch Options.
  • Other gaming-related apps are also available, such as OBS Studio to record and stream, Discord to discuss and collaborate, and MangoHud to monitor performance and temperatures.
Game development
Reading & writing
  • LibreOffice, Calligra, or OnlyOffice for spreadsheets, word processing, presentations, etc.
  • Foliate for general eBook reading (EPUB, Mobipocket, Kindle, FictionBook, and comic book archive formats).
  • Okular (KDE Plasma), Evince (GNOME), Xreader (Cinnamon), or Atril (Xfce) for PDFs.
  • Offline command line access to the ArchWiki, both during and after installation, via wiki-search [query] courtesy of arch-wiki-lite.
Listening & watching
Misc.
  • AUR helper yay (yay-bin) for convenient access to AUR software.
  • One or more programs for monitoring GPU usage, according to iGPU and dGPU types detected: nvtop (all brands), radeontop (AMD), and/or intel-gpu-tools (providing intel_gpu_top).
  • A variety of fun terminal programs, including asciiquarium, cmatrix, cbonsai, cowsay, lolcat, boxes, figlet, toilet, and nms ("No more secrets," to recreate the data decryption effect from the 1992 hacker film Sneakers).
  • The Transmission BitTorrent client, complete with a Qt or GTK GUI.
  • The Uncomplicated Firewall (ufw), enabled with the default "Home" profile.

Partitioning

GDL provides three partitioning options:

Partitioning method Details
Automatic
  • For BIOS systems, a separate /boot partition is created (260 MiB). BIOS/GPT systems are also provided a BIOS boot partition (1 MiB).
  • For UEFI systems, /boot remains part of the root partition and an EFI system partition (ESP) is created instead, mounted at /efi (100-260 MiB, depending on logical block size).
  • If desired, a swap partition is created as well (size set by user).
  • Overwrites an entire drive, or two if a second drive is selected to house a separate /home partition.
Automatic with LUKS encryption and logical volume management (LVM)
  • As of v1.2.0, GDL employs the LVM on LUKS approach (encrypt the drive, then create logical volumes) as this facilitates a smoother resume process after hibernation.
  • Optionally includes an encrypted logical swap space (size set by user).
  • A separate unencrypted /boot or /efi partition is also created, as described above.
  • Overwrites an entire drive, or two if a second drive is selected to house a separate /home partition (LVM is not applied to the second drive).
Manual
  • This option offers the most flexibility and control—including the ability to use multiple drives or only part of a drive—but also the most potential for something to go wrong. Use at your own risk and do your best to ensure you know what you're doing.
  • Select an entire drive (e.g., /dev/sda) to modify its partition table via cfdisk, fdisk, or gdisk.
  • Select a partition (e.g., /dev/sda1) to set its mount point (/, /home, etc.) or activate it as a swap partition. This may involve formatting the partition and selecting its file system.
  • NOTE: GDL's manual partitioning process has some quirks and limitations. It's not perfect and may not satisfy everyone's needs. For example, it currently does not facilitate manual creation of RAID, LVM, or encryption. These limitations can often be sidestepped by preparing your partitions via command line prior to running the installer (and perhaps double-checking and modifying relevant config files after installation), but this isn't guaranteed to work in all use cases.

Swap and hibernation

If hibernation support (suspend to disk) is desired, choose a suitably large swap space during installation: at least half the size of system RAM, but preferably much larger. If GDL detects that swap is smaller than system RAM, it will configure the system to compress the hibernation image as much as possible.

File systems

Three file system options are available for all partitions (except ESPs, which use FAT32):

Btrfs is growing in popularity due to its convenient compression and snapshot capabilities, among other features, and we highly recommend it! GDL automatically sets up Btrfs partitions with excellent mount options, including compression (compress-force=zstd:2), and creates appropriate subvolumes with names starting with @ as is common practice and expected by certain system restore utilities, such as Timeshift.

In fact, if Timeshift is selected during installation (and the root partition uses Btrfs), GDL configures Timeshift to automatically create root subvolume snapshots on a regular basis, including right before software updates (courtesy of timeshift-autosnap), and snapshots are added to the GRUB menu (thanks to grub-btrfs) so you can boot directly into one of them in the unlikely event that your system is "broken" but the GRUB menu is still accessible, allowing you to use Timeshift from within a snapshot to restore that (or another) snapshot so you can then reboot into your system as usual. (By default, these snapshots do not include the @home subvolume, which is generally the right choice: user data backups should probably be handled separately through a secure external drive, remote server, or both.) If the GRUB menu is inaccessible, then you must boot into a live Linux environment (such as the GDL installer) via USB flash drive to fix your system.

Kernel

As of v1.2.0, GDL installs the Zen kernel, described on the ArchWiki as "a collaborative effort of kernel hackers to provide the best Linux kernel possible for everyday systems" (the GDL installer itself uses the vanilla Arch Linux kernel). There are also a few unofficial custom kernels that might, in some cases, provide additional slight improvements to performance, RAM usage, etc., but they can also reduce stability and make upgrading less convenient, so, for now, GDL only provides the Zen kernel. You are, of course, free to install additional kernels as you see fit.

Languages

You can select any locale/language for your new system, of course, but as for the installer itself, GDL currently supports the following languages:

  • Bulgarian (Български)
  • Dutch (Nederlands)
  • English
  • French (Français)
  • German (Deutsch)
  • Greek (Ελληνικά)
  • Hungarian (Magyar)
  • Indonesian (bahasa Indonesia)
  • Italian (Italiano)
  • Latvian (Latviešu)
  • Lithuanian (Lietuvių)
  • Polish (Polski)
  • Portuguese (Português)
  • Portuguese, Brazilian (Português do Brasil)
  • Romanian (Română)
  • Russian (Русский)
  • Spanish (Español)
  • Swedish (Svenska)

Options for Chinese (中文), Japanese (日本語), and Korean (한국어) fonts were explored, but sadly there is currently no way to provide them within the minimal text-based environment of the installer. For your new system, however, IBus packages for convenient keyboard input in Chinese (ibus-libpinyin or ibus-chewing), Japanese (ibus-kkc), and Korean (ibus-hangul) are available during installation and, if selected, are configured for you (after login, use Ctrl+Space or Super+Space to change input language at any time). NOTE: In some cases, such as when using Cinnamon or Xfce, IBus might require additional configuration to work under Wayland, but it should always work well immediately under Xorg.

Minimum system requirements

Hardware Requirements
CPU 1 GHz dual-core 64-bit processor (3 GHz quad-core recommended)
GPU Whatever you need for the type of games you want to play/develop!
Memory 2 GB RAM (16 GB recommended)
Storage 20 GB of HDD/SSD space (1 TB recommended)

Using the installer

You can try GDL safely by downloading the latest ISO and using it as a virtual CD/DVD in a virtual machine. When you're ready to use it on a physical machine, you'll most likely want to use a USB flash drive as your installation medium, so here are some useful steps for that process on Linux (for alternative methods, including Windows and macOS options, consult this ArchWiki article or search online using a query such as "create bootable USB from ISO"):

  1. First, back up all important data from all devices involved in this process.
  2. Download the latest ISO.
  3. Insert the USB flash drive you want to use as the install medium. (NOTE: All data on the flash drive will be erased!)
  4. In a terminal, use the lsblk command to carefully determine the exact device name associated with your flash drive (something like sdc, sdd, etc.).
  5. Ensure the flash drive is unmounted.
  6. Carefully use the dd command shown below (which may require sudo for elevated privileges), replacing path/to/file.iso with the actual path to the ISO and replacing the x at the end of /dev/sdx with the letter associated with your flash drive as determined in step 4 (do not include a number and, above all, do not use the wrong device name). CAUTION: Using the wrong device name could result in extensive data loss and/or destruction of your current operating system!
    dd bs=4M conv=fsync oflag=direct status=progress if=path/to/file.iso of=/dev/sdx

That's it! Now you can boot from your USB flash drive to perform a fresh install of Golden Drake Linux.

The installer's command line environment can also be used for other purposes, such as fixing a broken system by mounting the appropriate partition(s) in /mnt and then running commands within the broken system via arch-chroot /mnt [command].

Reporting issues

If you encounter an issue that might just be a general hardware/software issue, or you simply have questions about terminology, processes, etc., first check the ArchWiki, man pages, and other resources for relevant information. (Consider this a gentle reminder to RTFM...ha!)

If you're confident an issue you've encountered is due to a problem within GDL, please provide a detailed report. If convenient, share ~/gdl.log as a direct attachment, copy-pasted text, or link (e.g., by running nc termbin.com 9999 < ~/gdl.log and copy-pasting the returned URL).

Contributing

Suggestions, questions, feature requests, etc., are welcome and can be shared here as an issue or discussion.

To contribute financially and receive certain benefits, including increased influence over the development of GDL and our indie game projects, please support us through Patreon or GitHub Sponsors. Donations via Ko-fi, Liberapay, Venmo and PayPal are also appreciated. We're deeply grateful for all our supporters, including:

If you wish to modify or supplement the project's code, feel free to submit a pull request. Please adhere to the following guidelines:

  • Follow shell scripting best practices, such as those recommended in Google's Shell Style Guide.
  • Use "${variable}" instead of $variable (but omit the quotation marks when necessary, i.e., in rare cases when a variable needs to be word-split into multiple strings).
  • Name constants and global variables LIKE_THIS, other variables (and functions) like_this.
  • Write comments where needed.
  • Use shellcheck and carefully test your code.

If you'd like to provide a new translation or modify an existing language file, that would be wonderful! Please use english.conf as your primary reference.

Compiling

GDL uses git-lfs to manage images, so if you want to git clone this repository, ensure git-lfs is installed on your system.

To compile within an Arch (or Arch-based) Linux environment, run build.sh with root permissions (e.g., sudo ./build.sh). If that fails, or if your Linux environment is not Arch-based, add a -c flag to compile in a temporary Arch container via podman (e.g., sudo ./build.sh -c). Compilation within non-Linux environments, such as Windows, macOS, and FreeBSD, should also be possible in one way or another, but these have not been tested.

Once the build is complete, the ISO and its checksum file are located in an out directory.

License

This project is licensed under the GNU GPLv2 license.