Flatpak: Difference between revisions

From NixOS Wiki
imported>Onny
mNo edit summary
imported>IgorM
m (Fixed syntax highlighting)
Line 29: Line 29:
To start using flatpaks, particularly for flatpak development:
To start using flatpaks, particularly for flatpak development:


<syntaxHighlight>
<syntaxHighlight lang=console>
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak update
$ flatpak update
flatpak search bustle
$ flatpak search bustle
flatpak install flathub org.freedesktop.Bustle
$ flatpak install flathub org.freedesktop.Bustle
flatpak run org.freedesktop.Bustle
$ flatpak run org.freedesktop.Bustle
</syntaxHighlight>
</syntaxHighlight>


Line 50: Line 50:
Clone, build and run the example project. As for now [https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/844 a patch] for libhandy might be required to fix a bug in the build process.
Clone, build and run the example project. As for now [https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/844 a patch] for libhandy might be required to fix a bug in the build process.


<syntaxHighlight>
<syntaxHighlight lang=console>
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
$ flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install org.gnome.Sdk/x86_64/master org.gnome.Platform/x86_64/master
$ flatpak install org.gnome.Sdk/x86_64/master org.gnome.Platform/x86_64/master
git clone https://gitlab.gnome.org/GNOME/libhandy.git
$ git clone https://gitlab.gnome.org/GNOME/libhandy.git
cd libhandy
$ cd libhandy
flatpak-builder --user --install _flatpak examples/sm.puri.Handy.Demo.json
$ flatpak-builder --user --install _flatpak examples/sm.puri.Handy.Demo.json
flatpak run sm.puri.Handy.Demo
$ flatpak run sm.puri.Handy.Demo
</syntaxHighlight>
</syntaxHighlight>



Revision as of 12:43, 1 October 2023

Flatpak is a linux application sandboxing and distribution framework

Usage

Using this configuration, flatpak will be installed and ready for use globally for all users:

/etc/nixos/configuration.nix
services.flatpak.enable = true;

If you'd rather make flatpak available on a specific user rather than globally, add flatpak to that user's packages. To be able to install flatpaks graphically, add the gnome.gnome-software package. The result will look something like this:

/etc/nixos/configuration.nix
  users.users.myflatpakuser = {
    packages = with pkgs; [
      flatpak
      gnome.gnome-software
    ];
  };

After adding the desired solution to your configuration file, flatpak will be installed, however it is not always added to your path directly, e.g. when you are using sway it will be not.

To manually add it to path while using a greetd login manager and Sway create a .profile file with an override for your XDG_DATA_DIRS path, e.g.:

.profile
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share

This is also required when installing flatpak on a per-user basis.

To start using flatpaks, particularly for flatpak development:

$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak update
$ flatpak search bustle
$ flatpak install flathub org.freedesktop.Bustle
$ flatpak run org.freedesktop.Bustle

Development

Build Flatpak project

The following example builds a demo project of the libhandy repository using flatpak-builder, installs it locally in the user space and run it. First install flatpak and flatpak-builder on your system

/etc/nixos/configuration.nix
services.flatpak.enable = true;
environment.systemPackages = [ pkgs.flatpak-builder ];

Clone, build and run the example project. As for now a patch for libhandy might be required to fix a bug in the build process.

$ flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
$ flatpak install org.gnome.Sdk/x86_64/master org.gnome.Platform/x86_64/master
$ git clone https://gitlab.gnome.org/GNOME/libhandy.git
$ cd libhandy
$ flatpak-builder --user --install _flatpak examples/sm.puri.Handy.Demo.json
$ flatpak run sm.puri.Handy.Demo

Note that the gnome-nightly repository and its dependencies are especially required for this specific project and might be different for other Flatpak projects.

Troubleshooting

Missing themes and cursors

If you have issues with cursors or themes in general, take a look at Fonts