Appimage/en: Difference between revisions
Updating to match new version of source page |
Updating to match new version of source page Tags: Mobile edit Mobile web edit |
||
| (One intermediate revision by the same user not shown) | |||
| Line 10: | Line 10: | ||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
$ nix-shell -p appimage-run | $ nix-shell -p appimage-run | ||
$ appimage-run | $ appimage-run path/to/application.AppImage | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== Additional Packages ===== | |||
Some appimages still have issues, so you can override for additional pkgs such as | |||
<syntaxhighlight lang="nix">programs.appimage.enable = true; | |||
programs.appimage.binfmt = true; | |||
programs.appimage.package = pkgs.appimage-run.override | |||
{ | |||
extraPkgs = pkgs: | |||
[ | |||
pkgs.icu | |||
pkgs.libxcrypt-legacy | |||
pkgs.python312 | |||
pkgs.python312Packages.torch | |||
]; | |||
}; | |||
</syntaxhighlight> | |||
=== Packaging === | === Packaging === | ||
See the [https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-appimageTools nixpkgs manual on wrapping AppImage packages]. In short, the AppImage is extracted and any dependencies are added as | See the [https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-appimageTools nixpkgs manual on wrapping AppImage packages]. In short, the AppImage is extracted and any dependencies are added as Nix build dependencies. | ||
Following example is a derivation for the program Quba, which is also distributed as AppImage. | Following example is a derivation for the program Quba, which is also distributed as AppImage. | ||
| Line 27: | Line 46: | ||
version = "1.4.0"; | version = "1.4.0"; | ||
pname = "quba"; | pname = "quba"; | ||
src = fetchurl { | src = fetchurl { | ||
url = "https://github.com/ZUGFeRD/quba-viewer/releases/download/v${version}/Quba-${version}.AppImage"; | url = "https://github.com/ZUGFeRD/quba-viewer/releases/download/v${version}/Quba-${version}.AppImage"; | ||
hash = "sha256-EsTF7W1np5qbQQh3pdqsFe32olvGK3AowGWjqHPEfoM="; | hash = "sha256-EsTF7W1np5qbQQh3pdqsFe32olvGK3AowGWjqHPEfoM="; | ||
}; | }; | ||
appimageContents = appimageTools.extractType1 { inherit name src; }; | appimageContents = appimageTools.extractType1 { inherit name src; }; | ||
in | in | ||
appimageTools. | appimageTools.wrapType2 rec { | ||
inherit | inherit pname version src; | ||
extraInstallCommands = '' | extraInstallCommands = '' | ||
substituteInPlace $out/share/applications/${pname}.desktop \ | substituteInPlace $out/share/applications/${pname}.desktop \ | ||
--replace-fail 'Exec=AppRun' 'Exec=${ | --replace-fail 'Exec=AppRun' 'Exec=${meta.mainProgram}' | ||
''; | ''; | ||
meta = { | meta = { | ||
description = "Viewer for electronic invoices"; | description = "Viewer for electronic invoices"; | ||
homepage = "https://github.com/ZUGFeRD/quba-viewer"; | homepage = "https://github.com/ZUGFeRD/quba-viewer"; | ||
| Line 58: | Line 73: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Configuration == | == Configuration == | ||
| Line 63: | Line 79: | ||
=== Register AppImage files as a binary type to binfmt_misc === | === Register AppImage files as a binary type to binfmt_misc === | ||
You can tell the Linux kernel to use an interpreter (e.g. <code>appimage-run</code>) when executing certain binary files through the use of [https://en.wikipedia.org/wiki/Binfmt_misc#External_links binfmt_misc], either by filename extension or magic number matching. Below NixOS configuration registers AppImage files (ELF files with magic number "AI" + 0x02) to be run with <code>appimage-run</code> as interpreter | You can tell the [[Linux kernel]] to use an interpreter (e.g. <code>appimage-run</code>) when executing certain binary files through the use of [https://en.wikipedia.org/wiki/Binfmt_misc#External_links binfmt_misc], either by filename extension or magic number matching. Below NixOS configuration registers AppImage files (ELF files with magic number "AI" + 0x02) to be run with <code>appimage-run</code> as interpreter: | ||
<syntaxhighlight lang="nixos"> | <syntaxhighlight lang="nixos"> | ||
| Line 74: | Line 88: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
This way AppImage files can be invoked directly as if they were normal programs | This way AppImage files can be invoked directly as if they were normal programs. | ||
[[Category:Software | [[Category:Software]] | ||