summary refs log tree commit diff
path: root/pkgs/tools/package-management
diff options
context:
space:
mode:
authorBignaux Ronan <ronan@aimao.org>2020-03-05 18:53:11 +0100
committerBignaux Ronan <ronan@aimao.org>2020-03-05 18:53:11 +0100
commit349e923e00cf46fa33f118bfd22024f392e95a79 (patch)
tree49cc2eb5314a7d8504730e825c2f9b7af3137888 /pkgs/tools/package-management
parentbf83a7cc66f6e4157fd6514e22096495e1a3b5e0 (diff)
downloadnixpkgs-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-xpkgs/tools/package-management/appimage-run/appimage-exec.sh43
-rw-r--r--pkgs/tools/package-management/appimage-run/default.nix69
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";
 })