Flatpak: Difference between revisions
m official flathub doku suggests using https://dl.flathub.org/repo/flathub.flatpakrepo |
Featuring declarative installation methods, general fixes and enhancement, featuring headers |
||
| Line 5: | Line 5: | ||
== Usage == | == Usage == | ||
=== Global Installation === | |||
Using this configuration, <code>flatpak</code> will be installed and ready to use globally for all users: | Using this configuration, <code>flatpak</code> will be installed and ready to use globally for all users: | ||
{{file|/etc/nixos/configuration.nix|nix | {{file|3=services.flatpak.enable = true;|name=/etc/nixos/configuration.nix|lang=nix}}To automatically configure a flatpak repository for all users using the global configuration file, add this to your <code>configuration.nix</code> file:{{file|3=systemd.services.flatpak-repo = { | ||
services.flatpak. | wantedBy = [ "multi-user.target" ]; | ||
path = [ pkgs.flatpak ]; | |||
script = '' | |||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo | |||
''; | |||
};|name=/etc/nixos/configuration.nix|lang=nix}} | |||
=== Per-User Installation === | |||
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-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-software</code> package. The result will look something like this: | ||
{{file| | {{file|3=users.users."user" = { | ||
packages = with pkgs; [ | packages = with pkgs; [ | ||
flatpak | flatpak | ||
gnome-software | gnome-software | ||
]; | ]; | ||
}; | };|name=/etc/nixos/configuration.nix|lang=nix}} | ||
=== Window Managers / Compositors Patches === | |||
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 [[Greetd]] login manager and [[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| | {{file|3=export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share|name=.profile|lang=}} | ||
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 <code>flatpak</code> on a per-user basis. | This is also required when installing <code>flatpak</code> on a per-user basis. | ||
=== Flatpak Package Installation === | |||
==== Declaratively ==== | |||
To install flatpak packages declaratively, you can use [https://github.com/gmodena/nix-flatpak nix-flatpak] (inspired by [https://github.com/in-a-dil-emma/declarative-flatpak declarative-flatpak]) | |||
To | ==== Imperatively ==== | ||
To install flatpak packages imperatively and use them, you can use [https://docs.flatpak.org/en/latest/using-flatpak.html the <code>flatpak</code> CLI] ([https://docs.flatpak.org/en/latest/flatpak-command-reference.html <code>flatpak</code> CLI Reference Documentation]) | |||
===== Example ===== | |||
<syntaxhighlight lang="console">$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo | |||
$ flatpak update | |||
$ flatpak search Flatseal | |||
$ flatpak install flathub com.github.tchx84.Flatseal | |||
$ flatpak run com.github.tchx84.Flatseal</syntaxhighlight> | |||
</ | |||
== Development == | == Development == | ||
| Line 57: | Line 53: | ||
The following example builds a demo app of the [https://github.com/GNOME/libadwaita libadwaita] 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 | The following example builds a demo app of the [https://github.com/GNOME/libadwaita libadwaita] 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| | {{file|3=services.flatpak.enable = true; | ||
services.flatpak.enable = true; | environment.systemPackages = [ | ||
environment.systemPackages = [ pkgs.flatpak-builder ]; | pkgs.flatpak-builder | ||
];|name=/etc/nixos/configuration.nix|lang=nix}} | |||
Clone, build and run the example project. | Clone, build and run the example project. | ||
<syntaxhighlight lang="console"> | <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 gnome-nightly org.gnome.Sdk org.gnome.Platform | $ flatpak install gnome-nightly org.gnome.Sdk org.gnome.Platform | ||
$ git clone https://gitlab.gnome.org/GNOME/libadwaita.git | $ git clone https://gitlab.gnome.org/GNOME/libadwaita.git | ||
| Line 71: | Line 66: | ||
$ nix shell nixpkgs#appstream | $ nix shell nixpkgs#appstream | ||
$ flatpak-builder --disable-tests --user --install build demo/org.gnome.Adwaita1.Demo.json | $ flatpak-builder --disable-tests --user --install build demo/org.gnome.Adwaita1.Demo.json | ||
$ flatpak run org.gnome.Adwaita1.Demo.json | $ flatpak run org.gnome.Adwaita1.Demo.json</syntaxhighlight> | ||
</syntaxhighlight> | |||
Note that the <code>gnome-nightly</code> repository and the <code>appstream</code> dependency are especially required for this specific project and might be different for other Flatpak projects. | Note that the <code>gnome-nightly</code> repository and the <code>appstream</code> dependency are especially required for this specific project and might be different for other Flatpak projects. | ||
| Line 79: | Line 73: | ||
=== Emulate Flatpaks of different architecture === | === Emulate Flatpaks of different architecture === | ||
It is possible to install and run Flatpaks which were compiled for a different platform. In this example we start the application ''Metronome'' as aarch64 Flatpak on a x86_64 host:<syntaxhighlight lang=" | It is possible to install and run Flatpaks which were compiled for a different platform. In this example we start the application ''Metronome'' as aarch64 Flatpak on a x86_64 host:<syntaxhighlight lang="console"> | ||
flatpak install --user --arch=aarch64 flathub com.adrienplazas.Metronome | $ flatpak install --user --arch=aarch64 flathub com.adrienplazas.Metronome | ||
flatpak run --user com.adrienplazas.Metronome | $ flatpak run --user com.adrienplazas.Metronome | ||
</syntaxhighlight>To support emulation with Qemu, [[QEMU#Run binaries of different architecture|following Binfmt configuration]] is required. | </syntaxhighlight>To support emulation with Qemu, [[QEMU#Run binaries of different architecture|following Binfmt configuration]] is required. | ||