diff --git a/pkgs/tools/package-management/appimage-run/default.nix b/pkgs/tools/package-management/appimage-run/default.nix index 98a04dff8f89..0595f2ea99f8 100644 --- a/pkgs/tools/package-management/appimage-run/default.nix +++ b/pkgs/tools/package-management/appimage-run/default.nix @@ -1,13 +1,29 @@ -{ appimageTools, buildFHSUserEnv, extraPkgs ? pkgs: [], appimage-run-tests ? null }: +{ appimageTools, buildFHSUserEnv, makeDesktopItem, extraPkgs ? pkgs: [], appimage-run-tests ? null }: let - fhsArgs = appimageTools.defaultFhsEnvArgs; -in buildFHSUserEnv (fhsArgs // { name = "appimage-run"; + fhsArgs = appimageTools.defaultFhsEnvArgs; + + desktopItem = makeDesktopItem { + inherit name; + exec = name; + desktopName = name; + genericName = "AppImage runner"; + noDisplay = true; + mimeTypes = ["application/vnd.appimage" "application/x-iso9660-appimage"]; + categories = ["PackageManager" "Utility"]; + }; +in buildFHSUserEnv (fhsArgs // { + inherit name; + targetPkgs = pkgs: [ appimageTools.appimage-exec ] ++ fhsArgs.targetPkgs pkgs ++ extraPkgs pkgs; runScript = "appimage-exec.sh"; + extraInstallCommands = '' + cp --recursive "${desktopItem}/share" "$out/" + ''; + passthru.tests.appimage-run = appimage-run-tests; }) diff --git a/pkgs/tools/package-management/appimage-run/test.nix b/pkgs/tools/package-management/appimage-run/test.nix index 34c5ab777268..8a6e27095123 100644 --- a/pkgs/tools/package-management/appimage-run/test.nix +++ b/pkgs/tools/package-management/appimage-run/test.nix @@ -1,4 +1,4 @@ -{ runCommand, fetchurl, appimage-run, glibcLocales, file }: +{ runCommand, fetchurl, appimage-run, glibcLocales, file, xdg-utils }: let # any AppImage usable on cli, really sample-appImage = fetchurl { @@ -11,21 +11,27 @@ let }; in runCommand "appimage-run-tests" { - buildInputs = [ appimage-run glibcLocales file ]; + buildInputs = [ appimage-run glibcLocales file xdg-utils ]; meta.platforms = [ "x86_64-linux" ]; } '' export HOME=$(mktemp -d) set -x + # regression test for #101137, must come first LANG=fr_FR appimage-run ${sample-appImage} --list ${sample-appImage} + # regression test for #108426 cp ${sample-appImage} foo.appImage LANG=fr_FR appimage-run ${sample-appImage} --list foo.appImage cp ${owdtest} owdtest.AppImage.gz gunzip owdtest.AppImage.gz appimage-run owdtest.AppImage + + # Verify desktop entry + XDG_DATA_DIRS="${appimage-run}/share" + [[ "$(xdg-mime query default application/vnd.appimage)" == '${appimage-run.name}.desktop' ]] + set +x touch $out '' -