summary refs log tree commit diff
diff options
context:
space:
mode:
authorWill Dietz <github@wdtz.org>2018-06-23 07:23:08 -0500
committerGitHub <noreply@github.com>2018-06-23 07:23:08 -0500
commit19ef534fbb044f2b95e0043c6e0f8b582d94952b (patch)
treea908555b17baed07f4fc12b4325c9292395c61f4
parentcdd5b90b02500d83f050932ac2bc3f080ef7381d (diff)
parentf38459442af891bc34237b3e067ece4ffce7e0b5 (diff)
downloadnixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar.gz
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar.bz2
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar.lz
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar.xz
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.tar.zst
nixpkgs-19ef534fbb044f2b95e0043c6e0f8b582d94952b.zip
Merge pull request #41762 from tilpner/appimage-run
appimage-run: init
-rw-r--r--pkgs/tools/package-management/appimage-run/default.nix146
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 148 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 00000000000..f6c4c25559e
--- /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
+  '';
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b6a715a6ecd..bdf2d83fe3f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -502,6 +502,8 @@ with pkgs;
     buildTools = androidenv.buildTools;
   };
 
+  appimage-run = callPackage ../tools/package-management/appimage-run {};
+
   apt-cacher-ng = callPackage ../servers/http/apt-cacher-ng { };
 
   apt-offline = callPackage ../tools/misc/apt-offline { };