Appimage/en: Difference between revisions

FuzzyBot (talk | contribs)
Updating to match new version of source page
FuzzyBot (talk | contribs)
Updating to match new version of source page
Tags: Mobile edit Mobile web edit
 
(2 intermediate revisions by the same user not shown)
Line 14: Line 14:
=== 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 nix build dependencies.
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.<syntaxhighlight lang="nix">
Following example is a derivation for the program Quba, which is also distributed as AppImage.
 
<syntaxhighlight lang="nix">
{
{
   lib,
   lib,
Line 25: Line 27:
   version = "1.4.0";
   version = "1.4.0";
   pname = "quba";
   pname = "quba";
  name = "${pname}-${version}";


   src = fetchurl {
   src = fetchurl {
Line 34: Line 35:
   appimageContents = appimageTools.extractType1 { inherit name src; };
   appimageContents = appimageTools.extractType1 { inherit name src; };
in
in
appimageTools.wrapType1 {
appimageTools.wrapType2 rec {
   inherit name src;
   inherit pname version src;


   extraInstallCommands = ''
   extraInstallCommands = ''
    mv $out/bin/${name} $out/bin/${pname}
    install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
     substituteInPlace $out/share/applications/${pname}.desktop \
     substituteInPlace $out/share/applications/${pname}.desktop \
       --replace-fail 'Exec=AppRun' 'Exec=${pname}'
       --replace-fail 'Exec=AppRun' 'Exec=${meta.mainProgram}'
    cp -r ${appimageContents}/usr/share/icons $out/share
   '';
   '';


Line 56: Line 54:
}
}
</syntaxhighlight>
</syntaxhighlight>


== Configuration ==
== Configuration ==
Line 61: Line 60:
=== 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:
 
Since [https://nixos.org/manual/nixos/stable/release-notes#sec-release-24.05-new-services NixOS 24.05], there is a binfmt option:
 
<syntaxhighlight lang="nixos">
<syntaxhighlight lang="nixos">
programs.appimage = {
programs.appimage = {
Line 74: Line 70:
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{{#translation:}}]]
[[Category:Software]]