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 Anarchy, ArchLabs, or a pure 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, and Debian along with some of its 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):

Desktop Environment Screenshot
KDE Plasma, with SDDM or LightDM 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 set as 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 anytime random numbers are desired: type roll 1 20 to roll 1d20, roll 2 4 to roll 2d4, roll 3 6 to roll 3d6 (or just roll 3 as six-sided dice is the default), and so on.
  • 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 (updatemirrors, updategrub, yaycleanup, 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 all the prerequisites for Lutris-assisted installation of Blizzard Battle.net, providing access to Overwatch, World of Warcraft, Hearthstone, Starcraft II, Diablo III, etc.
  • Steam, itch.io, Heroic, RetroArch, etc., can also be selected to provide even more access to an endless variety of games.
    • If steam is selected, the optional dependency steam-native-runtime is also installed so you can rely on steam-native in those rare cases when the standard steam runtime has a problem, such as failing to launch a particular game. If you encounter an issue that isn't solved by switching to steam-native, consult these game-specific and client-specific troubleshooting articles and other online resources, especially ProtonDB for Windows games: in general, you'll quickly discover a solution.
  • 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 for spreadsheets, word processing, presentations, etc. (for a thoroughly dark theme, go to Tools > Options > Application Colors, open the drop-down menu labeled "Automatic:", and select "Dark").
  • Foliate for general eBook reading (EPUB, Mobipocket, Kindle, FictionBook, and comic book archive formats), xCHM for CHM files, and 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 GPU type(s) detected: nvtop, radeontop, and/or intel-gpu-tools (providing intel_gpu_top).
  • A variety of fun terminal programs, including asciiquarium, cmatrix, cbonsai, cowsay, lolcat, boxes, figlet, toilet, pipes.sh, and nms ("No more secrets," to recreate the data decryption effect from the 1992 hacker movie 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).
  • Operates on a single drive, overwriting the entire drive.
Automatic with LUKS encryption and logical volume management (LVM)
  • Uses the LUKS on LVM approach: LVM is set up first, then encryption is applied.
  • Includes an encrypted / volume, encrypted /tmp volume, and, optionally, an encrypted logical swap space (size set by user).
  • A separate (unencrypted) /boot or /efi partition is also created, as described above.
  • Operates on a single drive, overwriting the entire 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.

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 (unless you want to use a RAID 5/6 setup)! The GDL installer 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 (as a read-only environment) in the unlikely event that your actual (read-write) system is broken, allowing you to use Timeshift from within that snapshot to restore a 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.)

Kernel

GDL utilizes the standard Linux kernel. Yes, there are a few interesting custom kernels, such as xanmod and tkg, that can in some cases provide slight improvements to gaming performance, RAM usage, etc., but they can also reduce stability and make upgrading less convenient, so, for now, GDL only installs the vanilla kernel. You are, of course, free to install additional kernels as you see fit.

Language Support

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).

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 (min. 1 GB) as your installation medium, so here are some useful steps for that process in Linux (for alternative methods, including Windows and macOS options, consult this ArchWiki article or search online using a query like "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 later!)
  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. 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 via GitHub or email (support[at]goldendrakestudios[dot]com) and, if convenient, share the log file located at /root/gdl.log during installation (or at ~/gdl.log in your newly-installed system) either as a direct attachment or by running the command nc termbin.com 9999 < /root/gdl.log (or nc termbin.com 9999 < ~/gdl.log post-installation) and sharing the returned URL.

Contributing

Feel free to send suggestions, questions, feature requests, etc., to the project maintainer, David C. Drake: drake[at]goldendrakestudios[dot]com

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, PayPal, and Venmo are also greatly appreciated). We are 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 thoroughly test your code.
  • Write informative commit messages.

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, first ensure git-lfs is installed on your system.

To compile in an Arch Linux environment, run build.sh with root permissions (e.g., sudo ./build.sh). In other environments, add a -c flag to compile in an Arch container via podman (e.g., sudo ./build.sh -c).

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.