mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-10-16 18:53:17 +02:00
5fb0ed64d0
This attempts to detect older appimages and extract them in the same manner as new ones, without changing filesystem paths
155 lines
2.7 KiB
Nix
155 lines
2.7 KiB
Nix
{ stdenv, writeScript, buildFHSUserEnv, coreutils, file, libarchive
|
|
, extraPkgs ? pkgs: [] }:
|
|
|
|
buildFHSUserEnv {
|
|
name = "appimage-run";
|
|
|
|
# Most of the packages were taken from the Steam chroot
|
|
targetPkgs = pkgs: with pkgs; [
|
|
gtk3
|
|
bashInteractive
|
|
gnome3.zenity
|
|
python2
|
|
xorg.xrandr
|
|
which
|
|
perl
|
|
xdg_utils
|
|
iana-etc
|
|
] ++ extraPkgs pkgs;
|
|
|
|
multiPkgs = pkgs: with pkgs; [
|
|
desktop-file-utils
|
|
xorg.libXcomposite
|
|
xorg.libXtst
|
|
xorg.libXrandr
|
|
xorg.libXext
|
|
xorg.libX11
|
|
xorg.libXfixes
|
|
libGL
|
|
|
|
gst_all_1.gstreamer
|
|
gst_all_1.gst-plugins-ugly
|
|
libdrm
|
|
xorg.xkeyboardconfig
|
|
xorg.libpciaccess
|
|
|
|
glib
|
|
gtk2
|
|
bzip2
|
|
zlib
|
|
gdk_pixbuf
|
|
|
|
xorg.libXinerama
|
|
xorg.libXdamage
|
|
xorg.libXcursor
|
|
xorg.libXrender
|
|
xorg.libXScrnSaver
|
|
xorg.libXxf86vm
|
|
xorg.libXi
|
|
xorg.libSM
|
|
xorg.libICE
|
|
gnome2.GConf
|
|
freetype
|
|
(curl.override { gnutlsSupport = true; sslSupport = false; })
|
|
nspr
|
|
nss
|
|
fontconfig
|
|
cairo
|
|
pango
|
|
expat
|
|
dbus
|
|
cups
|
|
libcap
|
|
SDL2
|
|
libusb1
|
|
udev
|
|
dbus-glib
|
|
libav
|
|
atk
|
|
libudev0-shim
|
|
networkmanager098
|
|
|
|
xorg.libXt
|
|
xorg.libXmu
|
|
xorg.libxcb
|
|
libGLU
|
|
libuuid
|
|
libogg
|
|
libvorbis
|
|
SDL
|
|
SDL2_image
|
|
glew110
|
|
openssl
|
|
libidn
|
|
tbb
|
|
wayland
|
|
mesa_noglu
|
|
libxkbcommon
|
|
|
|
flac
|
|
freeglut
|
|
libjpeg
|
|
libpng12
|
|
libsamplerate
|
|
libmikmod
|
|
libtheora
|
|
libtiff
|
|
pixman
|
|
speex
|
|
SDL_image
|
|
SDL_ttf
|
|
SDL_mixer
|
|
SDL2_ttf
|
|
SDL2_mixer
|
|
gstreamer
|
|
gst-plugins-base
|
|
libappindicator-gtk2
|
|
libcaca
|
|
libcanberra
|
|
libgcrypt
|
|
libvpx
|
|
librsvg
|
|
xorg.libXft
|
|
libvdpau
|
|
alsaLib
|
|
strace
|
|
];
|
|
|
|
runScript = writeScript "appimage-exec" ''
|
|
#!${stdenv.shell}
|
|
APPIMAGE="$(realpath "$1")"
|
|
|
|
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
|
|
${libarchive}/bin/bsdtar -x -C "$SQUASHFS_ROOT" -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
|
|
'';
|
|
}
|