Flatpak: Difference between revisions
imported>Ta1us m make nix user config more clear |
imported>Skylark m Missing small words |
||
Line 1: | Line 1: | ||
[https://www.flatpak.org/ Flatpak] is a | [https://www.flatpak.org/ Flatpak] is a Linux application sandboxing and distribution framework. | ||
== Usage == | == Usage == | ||
Using this configuration, <code>flatpak</code> will be installed and ready | Using this configuration, <code>flatpak</code> will be installed and ready to use globally for all users: | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
services.flatpak.enable = true; | services.flatpak.enable = true; | ||
</nowiki>}} | </nowiki>}} | ||
If you'd rather make flatpak available | 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 19: | ||
</nowiki>}} | </nowiki>}} | ||
After adding the desired solution to your configuration file, flatpak will be installed, | 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 path while using | 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.: | ||
{{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 39: | Line 39: | ||
== Development == | == Development == | ||
=== Build Flatpak project === | === Build a Flatpak project === | ||
The following example builds a demo project of the [https://gitlab.gnome.org/GNOME/libhandy libhandy] repository using <code>flatpak-builder</code>, installs it locally in the user space and | The following example builds a demo project of the [https://gitlab.gnome.org/GNOME/libhandy libhandy] repository using <code>flatpak-builder</code>, installs it locally in the user space and runs it. First install <code>flatpak</code> and <code>flatpak-builder</code> on your system | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
Line 48: | Line 48: | ||
</nowiki>}} | </nowiki>}} | ||
Clone, build and run the example project. | Clone, build and run the example project. 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 lang=console> | <syntaxHighlight lang=console> |
Revision as of 17:20, 16 October 2023
Flatpak is a Linux application sandboxing and distribution framework.
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