Nitrux is a distribution that doesn’t revolve around a package manager like other distributions; in Nitrux, the preferred method of obtaining new software is using AppImages. However, we understand that not all software is available as an AppImage. So, by default, we have included various options for users, such as Flatpak and Distrobox, to complement AppImages.

Additionally, Nitrux is an immutable distribution (the root is immutable by default), with the idea being that by making the root immutable, we provide users with a functional system that will not break over an update from a delivery channel we can’t control and that each upgrade to a new version occurs without anomalies, what we call “to have degree of certainty.” Of course, having a package manager that can alter the root wholly defeats the purpose.

Having laid out the context, today’s tutorial will look at how users can manage software in Nitrux.

Difficulty: ★☆☆☆☆

📜 Table of Contents

  1. AppImage
  2. Flatpak
  3. Distrobox
    1. Compiling Software in Nitrux
  4. Waydroid
  5. One more thing…
    1. Support for Other Self-Contained Formats
    2. Support for Other Software Installation Methods

AppImage

Since March 21st, 2023 the NX Software Center has been unable to connect to the API of one of its sources to list content, AppRepo.de. The developer of AppRepo has let us know that he’s still working on the project; however, the problem has occurred due to a migration of the building process of the AppImages to GH Actions.

An AppImage is a downloadable file for Linux that contains an application and everything the app needs to run (e.g., libraries, icons, fonts, translations, etc.) that you can’t expect to be part of each target system.

The first method to manage software in Nitrux is by using AppImages. AppImage provides a very simplistic solution to software distribution, a one-click solution to obtain software that is instantly accessible to anyone. AppImages can be obtained from the NX Software Center.

NX Software Center.

  • The managed locations (and thus the default) for AppImages in Nitrux are /Applications and ~/Applications.
  • AppImages launched from the application menu will be launched using Firejail for sandboxing by default.
  • Some Electron applications or Chromium-based web browsers packaged as AppImages will refuse to run when using Firejail unless the application uses a specific Chromium flag. To run these Chromium-based AppImages, append the following Chromium flag.
electron-app.AppImage --no-sandbox
chromium-based-browser.AppImage --no-sandbox
  • For AppImages that refuse to work and are not Chromium-based, edit the desktop launcher to launch the AppImage directly, i.e., open the applications menu, right-click the launcher to edit, go to the tab ‘Applications ‘and on ‘Program,’ only enter the full path to the AppImage and on ‘Argument(s) ‘leave it blank if no arguments will be passed.
      • ⚠️ Important: We strongly emphasize that we do not recommend running AppImages without the Firejail sandbox, especially anything connected to the internet. Do it at your own risk.
  • The AppImages listed in the software center come from AppImagehub.com and AppRepo.de.
    • 🔰 Information: If an AppImage downloaded from the NX Software Center does not work out of the box and its creator no longer maintains it, causing segmentation faults or other errors, check our tutorial to use Distrobox and run the AppImage using a container.

Disclaimer: We do not create, maintain or host the AppImage files the software center lists. These files are created, maintained, and hosted by third parties, and please let their creators or maintainers know if you have issues with these files.

Flatpak

Flatpak builds upon existing technologies such as cgroups, namespaces, bind mounts, and seccomp in the Linux kernel, OSTree from Project Atomic, and the OCI format developed by the Open Container Initiative.

  • Nitrux supports Flatpak by default, and Flathub is also enabled by default. However, the order of preference to obtain end-user software is AppImage first, Flatpak second.
    • ⚠️ Important: Users who want to use bleeding-edge Flatpaks can enable Flathub-beta. Do it at your own risk.
flatpak remote-add --user flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
  • Users can also use Bauh from the NX Software Center as an AppImage to manage Flatpaks.
    • Nitrux does not come with Bauh by default.
      • 🔰 Information: Since AppImages are executed using Firejail, this may interfere with installing some Flatpak applications, i.e., Bauh may display an error such as “bwrap: execvp /app/bin/apply_extra: Permission denied” when running under Firejail. Run Flatpak from the terminal to install the application, or run Bauh without Firejail to avoid this issue.

Bauh (not included by default).

Disclaimer: We do not develop Bauh or Flatpak. To report bugs about Bauh, create an issue at their bug tracker.

Distrobox

Please note that starting from version 2.6.0 to use a package manager users should use Distrobox.

Distrobox is based on an OCI image and implements concepts similar to ToolBox, built on top of Podman and OCI standard container technologies.

  • If the user requires to use APT (or any package manager), we strongly recommend users use Distrobox; check our tutorial.

neofetch on a Distrobox container.

Compiling Software in Nitrux

  • We strongly recommend users use containers to compile software.

Disclaimer: We do not develop Distrobox. To report bugs about Distrobox, create an issue at their bug tracker.

Waydroid

Waydroid is “A container-based approach to boot a complete Android system on a regular GNU/Linux system like Ubuntu.” To start using Waydroid, do the following.

  • ⚠️ Important: Waydroid will not use hardware acceleration when using the Nvidia proprietary drivers.
  • ⚠️ Important: Waydroid will not work in X11 but only in a Wayland session (hence the name, Wayland + Android).
  • ⚠️ Important: Waydroid will not work on the Live session, and it will not work on a virtual machine (except maybe QEMU, please refer to Waydroid’s documentation). Nonetheless, we strongly recommend using physical hardware as that’s where we’ve tested it and where we know it works.
  • 🔰 Information: Waydroid will download its system images to /var/lib; keep the size of this partition in mind.

Waydroid is running on Nitrux.

  • Since Nitrux 2.8.0, we include Waydroid by default.
  • First, install the Android images to use with Waydroid. To do this, click the applications launcher and then click Waydroid.
    • 🔰 Information: When initializing Waydroid using its GUI dialog window, users can choose between a system type, VANILLA (Lineage OS x64 without Google Play Services support) or a GAPPS (Lineage OS x64 with support for Google Play Services) image.
  • Alternatively, open the terminal and type the following command.
#    Initialize Waydroid using the VANILLA image
sudo waydroid init

#    Initialize Waydroid using the GAPPS image
sudo waydroid init -s GAPPS
  • Then, to launch Waydroid in full screen, click the applications launcher and then click Waydroid.
    • Alternatively, open the terminal and type the following command.
waydroid show-full-ui
  • To upgrade the system images that Waydroid uses, run the following command.
#     Upgrade Waydroid images
sudo waydroid upgrade
  • To effectively reset the configuration of Waydroid, run the following commands.
    1. First, stop the Waydroid container service.
    2. Then clean the configuration files.
    3. And finally, start the service and initialize Waydroid again.
#    Stop Waydroid service
sudo rc-service waydroid-container stop

#    Delete Waydroid configuration and images
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid || true

#    Start Waydroid service
sudo rc-service waydroid-container start
  • Waydroid provides a command to visualize its log; this is useful for troubleshooting. To visualize the log of Waydroid, run the following command.
#    Visualize Waydroid log
waydroid log

Disclaimer: We do not develop Waydroid. Please file issues with Waydroid at their bug tracker here.

One more thing…

As we can see, multiple ways of adding software to Nitrux exist. With the options above, there’s no shortage of software to install and use. Below you can find information regarding other methods to obtain software.

Support for Other Self-Contained Formats

  • Nitrux does not support Snaps as its daemon (snapd) requires systemd.

Support for Other Software Installation Methods

  • Homebrew is a macOS package manager that works on Linux, which allows users to install software to their home directory. Homebrew features are the following:
    • Homebrew can install software to your home directory, and so does not require sudo.
      • 🔰 Information: A package in Homebrew is called a formula. A list of all available formulas can be found here.
    • Install software not packaged by your host distribution.
    • Install up-to-date versions of software when your host distribution is old.
    • Use the same package manager to manage your macOS, Linux, and Windows systems.

That’s it; this concludes today’s tutorial.