{
  fetchurl,
  lib,
  stdenv,
  zlib,
  bzip2,
  libgcrypt,
  gdbm,
  gperf,
  tdb,
  gnutls,
  db,
  libuuid,
  lzo,
  pkg-config,
  guile,
  rpcsvc-proto,
  libtirpc,
}:

stdenv.mkDerivation rec {
  pname = "libchop";
  version = "0.5.2";

  src = fetchurl {
    url = "mirror://savannah/libchop/libchop-${version}.tar.gz";
    sha256 = "0fpdyxww41ba52d98blvnf543xvirq1v9xz1i3x1gm9lzlzpmc2g";
  };

  patches = [
    ./gets-undeclared.patch
    ./size_t.patch
    ./0001-Fix-RPC-compilation-when-using-libtirpc-rather-than-.patch
  ];

  nativeBuildInputs = [
    pkg-config
    gperf
    rpcsvc-proto
  ];

  env.NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ];
  NIX_LDFLAGS = [ "-ltirpc" ];

  buildInputs = [
    zlib
    bzip2
    lzo
    libgcrypt
    gdbm
    db
    tdb
    gnutls
    libuuid
    guile
    libtirpc
  ];

  doCheck = false;

  preConfigure = ''
    sed -re 's%@GUILE@%&/guile%' -i */Makefile.* Makefile.*
  '';

  meta = with lib; {
    description = "Tools & library for data backup and distributed storage";

    longDescription = ''
      Libchop is a set of utilities and library for data backup and
      distributed storage.  Its main application is chop-backup, an
      encrypted backup program that supports data integrity checks,
      versioning at little cost, distribution among several sites,
      selective sharing of stored data, adaptive compression, and more.
      The library itself, which chop-backup builds upon, implements
      storage techniques such as content-based addressing, content hash
      keys, Merkle trees, similarity detection, and lossless compression.
      It makes it easy to combine them in different ways.  The
      ‘chop-archiver’ and ‘chop-block-server’ tools, illustrated in the
      manual, provide direct access to these facilities from the command
      line.  It is written in C and has Guile (Scheme) bindings.
    '';

    homepage = "https://www.nongnu.org/libchop/";
    license = licenses.gpl3Plus;
    maintainers = [ ];
    platforms = platforms.gnu ++ platforms.linux;
  };
}