diff options
author | tilpner <till@hoeppner.ws> | 2018-06-09 19:10:16 +0200 |
---|---|---|
committer | tilpner <till@hoeppner.ws> | 2018-06-15 11:02:15 +0200 |
commit | f38459442af891bc34237b3e067ece4ffce7e0b5 (patch) | |
tree | 137b7c9eb0c9629455bc0d00c3876a1786ddd9fb /pkgs/tools/package-management | |
parent | bc490a4b3f48a3667c206869c5cc15056149d6c1 (diff) | |
download | nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar.gz nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar.bz2 nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar.lz nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar.xz nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.tar.zst nixlib-f38459442af891bc34237b3e067ece4ffce7e0b5.zip |
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.
Diffstat (limited to 'pkgs/tools/package-management')
-rw-r--r-- | pkgs/tools/package-management/appimage-run/default.nix | 146 |
1 files changed, 146 insertions, 0 deletions
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 + ''; +} |