diff options
Diffstat (limited to 'pkgs/tools/package-management/appimagekit/default.nix')
-rw-r--r-- | pkgs/tools/package-management/appimagekit/default.nix | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/pkgs/tools/package-management/appimagekit/default.nix b/pkgs/tools/package-management/appimagekit/default.nix new file mode 100644 index 000000000000..2c389c144b1e --- /dev/null +++ b/pkgs/tools/package-management/appimagekit/default.nix @@ -0,0 +1,112 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, cmake, autoconf, automake, libtool +, wget, xxd, desktop-file-utils +, glib, zlib, cairo, openssl, fuse, xz, squashfuse, inotify-tools, libarchive +, squashfsTools +, gtest +}: + +let + + appimagekit_src = fetchFromGitHub { + owner = "AppImage"; + repo = "AppImageKit"; + rev = "b0859501df61cde198b54a317c03b41dbafc98b1"; + sha256 = "0qqg79jw9w9rs8c2w3lla4kz62ihafrf7jm370pp1dl8y2i81jzg"; + }; + + # squashfuse adapted to nix from cmake experession in "${appimagekit_src}/cmake/dependencies.cmake" + appimagekit_squashfuse = squashfuse.overrideAttrs (attrs: rec { + name = "squashfuse-${version}"; + version = "20161009"; + + src = fetchFromGitHub { + owner = "vasi"; + repo = "squashfuse"; + rev = "1f980303b89c779eabfd0a0fdd36d6a7a311bf92"; + sha256 = "0lrw9ff8k15l34wjwyllw3i35hl0cms97jj2hpnr2q8ipgxpb5q5"; + }; + + patches = [ + "${appimagekit_src}/squashfuse.patch" + "${appimagekit_src}/squashfuse_dlopen.patch" + ]; + + postPatch = '' + cp -v ${appimagekit_src}/squashfuse_dlopen.[hc] . + ''; + + preConfigure = '' + sed -i "/PKG_CHECK_MODULES.*/,/,:./d" configure + sed -i "s/typedef off_t sqfs_off_t/typedef int64_t sqfs_off_t/g" common.h + ''; + + configureFlags = [ + "--disable-demo" "--disable-high-level" "--without-lzo" "--without-lz4" + ]; + + postConfigure = '' + sed -i "s|XZ_LIBS = -llzma |XZ_LIBS = -Bstatic -llzma/|g" Makefile + ''; + + # only static libs and header files + installPhase = '' + mkdir -p $out/lib $out/include + cp -v ./.libs/*.a $out/lib + cp -v ./*.h $out/include + ''; + }); + +in stdenv.mkDerivation rec { + name = "appimagekit-20180727"; + + src = appimagekit_src; + + patches = [ ./nix.patch ]; + + nativeBuildInputs = [ + pkgconfig cmake autoconf automake libtool wget xxd + desktop-file-utils + ]; + + buildInputs = [ + glib zlib cairo openssl fuse + xz inotify-tools libarchive + squashfsTools + ]; + + preConfigure = '' + export HOME=$(pwd) + ''; + + cmakeFlags = [ + "-DUSE_SYSTEM_XZ=ON" + "-DUSE_SYSTEM_SQUASHFUSE=ON" + "-DSQUASHFUSE=${appimagekit_squashfuse}" + "-DUSE_SYSTEM_INOTIFY_TOOLS=ON" + "-DUSE_SYSTEM_LIBARCHIVE=ON" + "-DUSE_SYSTEM_GTEST=ON" + "-DUSE_SYSTEM_MKSQUASHFS=ON" + "-DBUILD_TESTING=${if doCheck then "ON" else "OFF"}" + ]; + + checkInputs = [ gtest ]; + doCheck = false; # fails 1 out of 4 tests, I'm too lazy to debug why + + # for debugging + passthru = { + squashfuse = appimagekit_squashfuse; + }; + + meta = with stdenv.lib; { + description = "A tool to package desktop applications as AppImages"; + longDescription = '' + AppImageKit is an implementation of the AppImage format that + provides tools such as appimagetool and appimaged for handling + AppImages. + ''; + license = licenses.mit; + homepage = src.meta.homepage; + platforms = platforms.linux; + }; +} |