A Nix expression for the old official reMarkable Linux Desktop Client

Hi folks! I threw together an expression for building the old official-yet-discontinued-yet-still-working reMarkable desktop client for Linux. For those unsure what reMarkable is, here’s their site.

I’m pretty sure this doesn’t fit well at nixpkgs seeing as its discontinued and no longer officially supported, so I thought I’d share it here instead:

# `remarkable-client.nix`
#
# Change the `src` field to your local copy of the `remarkable-linux-client.deb` package.
#
# Next, build with:
#
# ```
# nix-build -e "with import <nixpkgs> {}; libsForQt5.callPackage ./remarkable-client.nix {}"
# ```
#
# Then run with:
#
# ```
# ./result/bin/reMarkable
# ```
{ lib
, stdenv
, autoPatchelfHook
, dpkg
, fetchurl
, karchive
, qtbase
, qtgraphicaleffects
, qtquickcontrols2
, qtsvg
, qtwebsockets
, wrapQtAppsHook
}:
stdenv.mkDerivation {
  pname = "remarkable-client";
  version = "2017-10-27";

  src = ./remarkable-linux-client.deb;

  nativeBuildInputs = [
    autoPatchelfHook
    dpkg
    wrapQtAppsHook
  ];

  buildInputs = [
    karchive
    qtbase
    qtgraphicaleffects
    qtquickcontrols2
    qtsvg
    qtwebsockets
  ];

  unpackPhase = "true";

  installPhase = ''
    mkdir -p $out/bin
    mkdir -p $out/lib
    dpkg -x $src $out
    cp $out/usr/bin/reMarkable $out/bin/
    cp $out/usr/lib/libpdfium.so.1 $out/lib/
    rm -rf $out/usr/
  '';

  meta = with lib; {
    homepage = "https://remarkable.com";
    platforms = platforms.linux;
  };
}

Caveats

No Official Executable Download

The old deb file distributed by reMarkable has since been taken down. The next best thing I could find was a Google Drive URL which the remarkable-client AUR package currently seems to point to - see here. As a result, you currently have to fetch the .deb file and change src yourself. I’m unsure if there was ever an unfree-yet-distributable license for the old client or not.

Partial Rendering Bug

For some reason the client is unable to display or render content that was drawn or written with the official pen. This includes the thumbnail previews, as well as attempts at rendering to PDF or PNG. Normal PDF documents appear to show up fine both in the previews and renders.

I’m not sure what’s going on here, but I’d love to solve this so that I can use the device for signing, drawing, filling out exercises, etc. My suspicion is that I must be missing required Qt library or something along these lines, but I’ve been unable to track this down as of yet…

If anyone has any ideas on solving this, suggestions would be more than welcome!

2 Likes