Installing and Managing Software on Bazzite

Package Formats

1. Flatpak

Flatpak

Flatpak is the primary method of installing applications on Bazzite.

  • It is a universal containerized package format that tries to sandbox applications through flexible permissions that the application has access to on your system.
  • Typically it is recommended to use Flatpak for most software when possible.

Discover GNOME Software

Flatpaks can be installed via the software center that is pre-installed like Discover or GNOME Software depending on the desktop environment you chose.

Alternatively open a host terminal and enter:

flatpak install <application>

Flathub App Store

System & User Flathub Remotes

  • Both “system” and “user” Flathub remotes are enabled by default.
  • Bazzite pre-installs default applications with the system remote, and is mainly intended for multi-user systems.
    • Some applications may require the system remote however.
  • User is intended for most applications, but it isn’t necessarily wrong if applications are installed with System too.

Read more about system versus user Flathub remotes in the upstream documentation.

Manage Flatpaks

  • Manage Flatpaks with Flatseal and Warehouse which are both pre-installed.
    • Flatseal is for changing application permissions if necessary.
    • Warehouse grants the ability to downgrade applications, add other Flatpak sources, and the ability to backup application userdata.

2. ujust

Shell Scripts (.sh)

Technically ujust is not a package format but are convenience commands that automate tasks using scripts and can be utilized to install specific software, but there are also commands for system configuration and maintenance too.

Open a host terminal and enter:

ujust

This will output a list of available commands.

Find the command you want to use and enter:

ujust <command>

You can search for specific commands by entering:

ujust | grep "<search keyword(s)>"
  • install-: Install program, there is no configurations or uninstall commands
  • get-: Install an “extension” like Decky plugins, and if it is an extension then it can use get- too
  • setup-: Install program, provides uninstall and configuration options for after install
  • configure-: Configure something that came by default on the image
    • If it must be installed first, then it will be in setup-
  • toggle-: Turns something on/off
    • Selection might be automatic or manual depending on implementation
  • fix-: Fixes, patches or works around an issue
  • distrobox-: Distrobox exclusive verb for useful Distrobox stuff
  • foo: Replace this with whatever the command is called
    • These are shortcuts that we have deemed necessary to not have a verb
      • Examples: ujust update and ujust enroll-secureboot-key

View each ujust script’s source code

If you would like to see what each script does for each command then open a host terminal and enter:

ujust --show <command>

Alternatively, you can find the ujust commands locally in:
/usr/share/ublue-os/just

3. Homebrew

Homebrew is a package manager that installs packages to their own prefix, and is used strictly for command-line interface (CLI) and terminal user interface (TUI) applications.

Install packages in a host terminal with this command:

brew install <package>

4. Distrobox

distrobox

Run other minimal variants of popular Linux distributions in Bazzite inside of a container, and access each distribution’s packages without any of their dependencies and libraries affecting the host machine.

Important Notes:

  • Containers are not virtual machines.
  • Containers are intended to be disposable and may run into issues where they need to be recreated.
  • Using this method to obtain software requires knowledge of how traditional Linux operating systems install packages.
    • Create a test container to familiarize yourself with basic Linux commands before diving in further.

Distrobox containers run sub-systems of other popular Linux distributions with access to their package managers (apt, dnf, pacman, etc.) and their package formats (.deb/.rpm) and any additional repositories like the AUR.

Package Mangers for a Small List of Linux Distributions:

Use Cases

Distrobox containers can be used for both development environments and installing applications that are not available in any of the other installation methods and may be exclusive to other package managers.

Distrobox Graphical Interface

Distrobox containers can be created and managed graphically with BoxBuddy which is pre-installed.

Desktop Integration

Applications with a graphical user interface can integrate with your system with an application shortcut entering this command inside of the container:

distrobox-export --app <package>

Read our Ptyxis documentation on how containers integrate with your system.

Manually Create Pre-Configured Distrobox Containers

ujust distrobox-assemble

Select the container that you want to use.

Advanced users: Declare your own custom Distrobox containers following the distrobox-assemble documentation.

Entering The Container

Swap between different containers in your host with the terminal or alternatively enter:

distrobox enter <container>

Removing Distrobox Containers

Delete containers graphically with BoxBuddy.

Alternatively, use the command line:

distrobox stop <container_name>
distrobox rm -f <container_name>

Distrobox Video Guide

5. AppImage

Note: AppImages may not be supported if rebasing to other Fedora Atomic Desktop images.
AppImage is a universal package format that attempts to bundle every dependency that an application needs into one portable file.

  • AppImages can be installed by downloading any file with a .AppImage extension and then giving it executable permissions in the file’s properties so the application can run properly.
  • AppImages can be installed from a project’s website, AppImage Hub or if you install AppImage Pool.
  • Manage AppImages with the Gear Lever application that is pre-installed.

6. Package Layering with rpm-ostree (Not Recommended)

rpm-ostree

Notice: Using rpm-ostree irresponsibly can be destructive.

Attention: Layering packages may prevent updates and may cause several issues until the layered packages are uninstalled.

Install Fedora Linux packages by installing them with rpm-ostree.

  • This is known as “layering packages” to the image.
  • Layering packages will require a system reboot when it finishes creating the new deployment with the package(s) added to your image.
  • Use this method as a last resort and for anything at a “system-level” only.

Common rpm-ostree Terminal Commands:

rpm-ostree install <package>

Installs Fedora package(s) to the system that stay between updates.

rpm-ostree uninstall <package>

Uninstall any layered packages added to the system.

rpm-ostree search <package>

Search for Fedora packages that can be installed.

RPM packages installed on the host

Fedora containers should be used for most RPM files, but sometimes they need to be installed to your host.

You can install RPM files to your host with rpm-ostree by entering:

rpm-ostree install <package>.rpm

You may need to copy the full path (/path/to/rpmfile.rpm) for it to install properly.

Note: The downside of installing local RPM files outside of the Fedora repositories is updates for the specific RPM package will not apply automatically.

How do I install COPR repositories?

Note: Highly advised to not use third-party COPR repos.

  1. Download the .repo file and save it to /etc/yum.repos.d/

  2. Then install the package with rpm-ostree

If you experience issues updating your system due to GPG signature issues, then this can be fixed by either removing the COPR repository, or editing the file by changing gpgcheck=1 to gpgcheck=0 (or similar) and saving it at your own risk.

MAJOR Caveats

Layering packages are mostly intended for system-level applications, libraries, and other dependencies. It is recommend by upstream to use all of the methods above before installing software with rpm-ostree. Typical users should not be using rpm-ostree to install end-user graphical applications.

Layering packages can cause severe consequences including:

  • Break upgrades or prevent rebasing.
  • Conflict with existing packages as part of the image.
  • Updates will take longer to download as you layer more packages to your system.
  • Eventually package layering will be removed later in the future for Fedora Atomic Desktop and is only used currently as a crutch for the current software ecosystem on desktop Linux.

It is highly recommended to only use this command when absolutely necessary especially if the application can be obtained through other methods.

Remove ALL Layered Packages

If you run into issues upgrading due to a layered package conflict, then either optionally uninstall the conflicted package(s) or remove all layered packages with this command:

rpm-ostree reset

How do I run Windows applications?

WINE

Use these WINE front-ends:

  • Steam (pre-installed) has a Windows compatibility layer built-in.
    • Read the Gaming Guide for more information on setting up and using Proton.
  • Lutris (pre-installed) for non-Steam video games.
  • Heroic for Epic Games and Amazon Games integration.
  • Bottles for general-purpose applications or as an alternative to Lutris.
  • itch for games on itch.io.
    • Also comes pre-installed with a Windows compatibility layer.
  • WineZGUI (pre-installed) for Windows applications that don’t require special considerations for their prefix.

How do I run Android applications?

waydroid_icon_sm

Follow the Waydroid guide.


Video Showcase of Installing Software


Documentation Contributors: HikariKnight

See also: Updates, Rollbacks, & Rebasing

View all Bazzite documentation

2 Likes

Hi,

Brew and Fleek are part of the upstream Universal Blue images. You can virtually use both in the same manner on most of the popular images (main, nvidia, bluefin, etc.)

To answer your questions in order about the Bazzite images:

  • No. Desktop images have Nvidia variants, but not the Steam Deck/HTPC and other handheld PC images do NOT have Nvidia support. These images include Game Mode (gamescope-session.) Any of the images that specifically mention -nvidia have the proprietary drives preinstalled.
  • Yes. Change the appearance settings in KDE or GNOME to move away from their branding.
  • You can’t unfortunately at this time.
  • bazzite is the default variant to install on an AMD/Intel GPU laptop, yes. There are special hardware variants if those apply to you (surface, framework, etc.)
  • -nokmods on Bazzite is deprecated. It is still on Fedora 38 and will probably not update past this version in the future. There is no warning. I should add that to the next newsletter. All of the regular Universal Blue images are considered nokmods except Bazzite where it is now required.

Thanks for asking.

thanks, found out I had just installed all the time. Its just called ujust as the fish shell extension is not there

to the other questions I got the answers myself

  • bazzite has minimal customization, the non-steamdeck version has no branding.
  • yafti is completely optional and can just be closed

Thanks for the addition to the newsletter. I hope that reaches some people. Its the same with all nokmods images, I was on an unupdated kinoite for weeks and wondered a bit, but background updates dont really make that obvious