f38459442a
This adds a best-effort hack to run AppImages, which currently don't work out-of-the-box on NixOS. This is not preferable to using packaged applications, but may help users if the application they want to run is not in nixpkgs. It uses the package list from the Steam chroot, but without Steam packages.
146 lines
2.4 KiB
Nix
146 lines
2.4 KiB
Nix
{ stdenv, writeScript, buildFHSUserEnv, coreutils
|
|
, 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
|
|
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"
|
|
"$APPIMAGE" --appimage-extract 2>/dev/null
|
|
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
|
|
'';
|
|
}
|