diff options
author | Bignaux Ronan <ronan@aimao.org> | 2020-03-05 18:53:11 +0100 |
---|---|---|
committer | Bignaux Ronan <ronan@aimao.org> | 2020-03-05 18:53:11 +0100 |
commit | 349e923e00cf46fa33f118bfd22024f392e95a79 (patch) | |
tree | 49cc2eb5314a7d8504730e825c2f9b7af3137888 /pkgs/tools/package-management | |
parent | bf83a7cc66f6e4157fd6514e22096495e1a3b5e0 (diff) | |
download | nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar.gz nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar.bz2 nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar.lz nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar.xz nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.tar.zst nixpkgs-349e923e00cf46fa33f118bfd22024f392e95a79.zip |
appimage-run: replace writeScript to a standalone appimage-exec.sh
Diffstat (limited to 'pkgs/tools/package-management')
-rwxr-xr-x | pkgs/tools/package-management/appimage-run/appimage-exec.sh | 43 | ||||
-rw-r--r-- | pkgs/tools/package-management/appimage-run/default.nix | 69 |
2 files changed, 65 insertions, 47 deletions
diff --git a/pkgs/tools/package-management/appimage-run/appimage-exec.sh b/pkgs/tools/package-management/appimage-run/appimage-exec.sh new file mode 100755 index 00000000000..cdce727af4f --- /dev/null +++ b/pkgs/tools/package-management/appimage-run/appimage-exec.sh @@ -0,0 +1,43 @@ +#!@bash@/bin/bash +if [ $# -eq 0 ]; then + echo "Usage: $0 FILE [OPTION...]" + echo + echo 'Options are passed on to the appimage.' + echo "If you want to execute a custom command in the appimage's environment, set the APPIMAGE_DEBUG_EXEC environment variable." + exit 1 +fi +APPIMAGE="$(realpath "$1")" +shift + +if [ ! -x "$APPIMAGE" ]; then + echo "fatal: $APPIMAGE is not executable" + exit 1 +fi + +SHA256="$(@coreutils@/bin/sha256sum "$APPIMAGE" | cut -d ' ' -f 1)" +SQUASHFS_ROOT="''${XDG_CACHE_HOME:-$HOME/.cache}/appimage-run/$SHA256/" +mkdir -p "$SQUASHFS_ROOT" + +export APPDIR="$SQUASHFS_ROOT/squashfs-root" +if [ ! -x "$APPDIR" ]; then + cd "$SQUASHFS_ROOT" + + if @file@/bin/file --mime-type --brief --keep-going "$APPIMAGE" | grep -q iso; then + # is type-1 appimage + mkdir "$APPDIR" + @libarchive@/bin/bsdtar -x -C "$APPDIR" -f "$APPIMAGE" + else + # is type-2 appimage + "$APPIMAGE" --appimage-extract 2>/dev/null + fi +fi + +cd "$APPDIR" +export PATH="$PATH:$PWD/usr/bin" +export APPIMAGE_SILENT_INSTALL=1 + +if [ -n "$APPIMAGE_DEBUG_EXEC" ]; then + exec "$APPIMAGE_DEBUG_EXEC" +fi + +exec ./AppRun "$@" diff --git a/pkgs/tools/package-management/appimage-run/default.nix b/pkgs/tools/package-management/appimage-run/default.nix index 426cc7943e5..3eeaa752f02 100644 --- a/pkgs/tools/package-management/appimage-run/default.nix +++ b/pkgs/tools/package-management/appimage-run/default.nix @@ -1,56 +1,31 @@ -{ writeScript, buildFHSUserEnv, coreutils, file, libarchive, runtimeShell -, extraPkgs ? pkgs: [], appimageTools }: +{ buildFHSUserEnv, coreutils, file, libarchive, runtimeShell +, extraPkgs ? pkgs: [], appimageTools, stdenv, bash }: let - fhsArgs = appimageTools.defaultFhsEnvArgs; -in buildFHSUserEnv (fhsArgs // { - name = "appimage-run"; - - targetPkgs = pkgs: fhsArgs.targetPkgs pkgs ++ extraPkgs pkgs; - - runScript = writeScript "appimage-exec" '' - #!${runtimeShell} - if [ $# -eq 0 ]; then - echo "Usage: $0 FILE [OPTION...]" - echo - echo 'Options are passed on to the appimage.' - echo "If you want to execute a custom command in the appimage's environment, set the APPIMAGE_DEBUG_EXEC environment variable." - exit 1 - fi - APPIMAGE="$(realpath "$1")" - shift - if [ ! -x "$APPIMAGE" ]; then - echo "fatal: $APPIMAGE is not executable" - exit 1 - fi - - SHA256="$(${coreutils}/bin/sha256sum "$APPIMAGE" | cut -d ' ' -f 1)" - SQUASHFS_ROOT="''${XDG_CACHE_HOME:-$HOME/.cache}/appimage-run/$SHA256/" - mkdir -p "$SQUASHFS_ROOT" + name = "appimage-run"; + version = "1.0"; + fhsArgs = appimageTools.defaultFhsEnvArgs; - export APPDIR="$SQUASHFS_ROOT/squashfs-root" - if [ ! -x "$APPDIR" ]; then - cd "$SQUASHFS_ROOT" + appimage-exec = stdenv.mkDerivation { + #inherit pname version; + name = "appimage-exec"; - if ${file}/bin/file --mime-type --brief --keep-going "$APPIMAGE" | grep -q iso; then - # is type-1 appimage - mkdir "$APPDIR" - ${libarchive}/bin/bsdtar -x -C "$APPDIR" -f "$APPIMAGE" - else - # is type-2 appimage - "$APPIMAGE" --appimage-extract 2>/dev/null - fi - fi + inherit coreutils file libarchive bash; - cd "$APPDIR" - export PATH="$PATH:$PWD/usr/bin" - export APPIMAGE_SILENT_INSTALL=1 + buildCommand = '' + mkdir -p $out/bin/ + substituteAll ${./appimage-exec.sh} $out/bin/appimage-exec.sh + chmod +x $out/bin/appimage-exec.sh + ''; + }; - if [ -n "$APPIMAGE_DEBUG_EXEC" ]; then - exec "$APPIMAGE_DEBUG_EXEC" - fi +in buildFHSUserEnv (fhsArgs // { + inherit name; - exec ./AppRun "$@" - ''; + targetPkgs = pkgs: + [ appimage-exec + ] ++ fhsArgs.targetPkgs pkgs ++ extraPkgs pkgs; + #extraInstallCommands = ''''; + runScript = "appimage-exec.sh"; }) |