From f38459442af891bc34237b3e067ece4ffce7e0b5 Mon Sep 17 00:00:00 2001 From: tilpner Date: Sat, 9 Jun 2018 19:10:16 +0200 Subject: appimage-run: init 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. --- .../package-management/appimage-run/default.nix | 146 +++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 pkgs/tools/package-management/appimage-run/default.nix (limited to 'pkgs/tools') diff --git a/pkgs/tools/package-management/appimage-run/default.nix b/pkgs/tools/package-management/appimage-run/default.nix new file mode 100644 index 000000000000..f6c4c25559e2 --- /dev/null +++ b/pkgs/tools/package-management/appimage-run/default.nix @@ -0,0 +1,146 @@ +{ 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 + ''; +} -- cgit 1.4.1