Flatpak: Difference between revisions

From NixOS Wiki
imported>Liassica
m (→‎Usage: Removed problematic angle brackets)
(added link to manual)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[https://www.flatpak.org/ Flatpak] is a Linux application sandboxing and distribution framework.
[https://www.flatpak.org/ Flatpak] is a Linux application sandboxing and distribution framework.
This article extends the documentation in the [https://nixos.org/manual/nixos/stable/#module-services-flatpak NixOS manual].


== Usage ==
== Usage ==
Line 8: Line 10:
</nowiki>}}
</nowiki>}}


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


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 19: Line 21:
</nowiki>}}
</nowiki>}}


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


To manually add it to the path while using the [https://nixos.wiki/wiki/Greetd greetd] login manager and [https://nixos.wiki/wiki/Sway Sway], create a <code>.profile</code> file with an override for your <code>XDG_DATA_DIRS</code> path, e.g.:
To manually add it to the path while using the [[Greetd]] login manager and [[Sway]], create a <code>.profile</code> file with an override for your <code>XDG_DATA_DIRS</code> path, e.g.:
{{file|.profile|nix|<nowiki>
{{file|.profile|nix|<nowiki>
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share
Line 65: Line 67:
=== Missing themes and cursors ===
=== Missing themes and cursors ===


If you have issues with cursors or themes in general, take a look at [https://nixos.wiki/wiki/Fonts#Flatpak_applications_can.27t_find_system_fonts Fonts]
If you have issues with cursors or themes in general, take a look at [[Fonts#Flatpak_applications_can't_find_system_fonts]]
 
[[Category:Software]]
[[Category:NixOS Manual]]

Latest revision as of 18:44, 15 May 2024

Flatpak is a Linux application sandboxing and distribution framework.

This article extends the documentation in the NixOS manual.

Usage

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

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

If you'd rather make Flatpak available to a specific user, 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."user" = {
    packages = with pkgs; [
      flatpak
      gnome.gnome-software
    ];
  };

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

To manually add it to the path while using the 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 a Flatpak project

The following example builds a demo project of the libhandy repository using flatpak-builder, installs it locally in the user space and runs 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. 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#Flatpak_applications_can't_find_system_fonts