Title: Export Flatpak programs from a computer to another
       Author: Solène
       Date: 01 January 2023
       Tags: linux flatpak bandwidth
       Description: In this article, you will learn how to use Flatpak to
       export an installed program to another Linux system.
       
       # Introduction
       
       As a flatpak user, but also someone with a slow internet connection, I
       was looking for a way to export a flatpak program to install it on
       another computer.  It turns out flatpak supports this, but it's called
       "create-usb" for some reasons.
       
       So today, I'll show how to export a flatpak program from a computer to
       another.
       
 (HTM) Flatpak official website
 (HTM) Flatpak documentation about usb drives
       
       # Pre-requisites
       
       For some reasons, the default flathub parameters doesn't associate it a
       "Collection ID", which is required for the create-usb feature to work,
       so we need to associate a "Collection ID" to the flathub remote
       repository on both systems.
       
       We can use the example from the official documentation:
       
       ```
       flatpak remote-modify --collection-id=org.flathub.Stable flathub
       ```
       
       # Export
       
       The export process is simple, create a directory in which you want the
       flatpak application to be exported, we will use `~/export/` in the
       examples, with the program `org.mozilla.firefox`.
       
       ```
       flatpak create-usb ~/export/ org.mozilla.firefox
       ```
       
       The export process will display a few lines and tell you when it
       finished.
       
       If you export multiple programs into the same directory, the export
       process will be smart and skip already existing components.
       
       # Import
       
       Take the `~/export/` directory, either on a USB drive, or copy it using
       rsync, share it over NFS/Samba etc... It's up to you.  In the example,
       `~/export/` refers to the same directory transferred from the previous
       step onto the new system.
       
       Now, we can run the import command to install the program.
       
       ```
       flatpak install --sideload=~/export/.ostree/repo/ flathub org.mozilla.firefox
       ```
       
       If it's working correctly, it should be very fast.
       
       # Limitation
       
       Because the flatpak components/dependencies of a program can differ
       depending on the host (for example if you have an NVIDIA card, it will
       pull some NVIDIA dependencies), so if you export a program from a
       non-NVIDIA system to the other, it won't be complete to work reliably
       on the new system, but the missing parts can be downloaded on the
       Internet, it's still reducing the bandwidth requirement.
       
       # Conclusion
       
       I kinda like Flatpak, it's convenient and reliable, and allow handling
       installed programs without privileges escalation.  The programs can be
       big, it's cool to be able to save/export them for later use.