tvl-depot/third_party/lieer/default.nix
Vincent Ambo 8b58593193 fix(3p/lieer): Work around issues in Google Mail API
There is a temporary issue affecting the retrieval of discovery
documents in the Google Mail API:
https://issuetracker.google.com/issues/160441983

It's possible to work around this by hardcoding the document instead
of retrieving it over the network, as all other API calls still work
as they should.

This does exactly that by generating a patch to apply to lieer, from
the file checked in to the depot with this commit.

This workaround should be reverted once Google has fixed the issue
upstream.

Change-Id: I0063d0bc67753ffa5261c2aa059c7bfd09136ba0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/945
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
2020-07-06 21:35:30 +00:00

56 lines
1.5 KiB
Nix

# Lieer is a small tool to synchronise a Gmail account with a local
# maildir.
#
# Lieer is packaged in nixpkgs, but as of 2019-12-23 it is an old
# version using the previous branding (gmailieer).
{ pkgs, ... }:
# For a variety of reasons (specific to my setup), custom OAuth2
# scopes are used.
#
# The below client ID is the default for *@tazj.in and is overridden
# in a private repository for my work account. Publishing it here is
# not a security issue.
{
clientId ? "515965513093-7b4bo4gm0q09ccsmikkuaas9a40j0jcj.apps.googleusercontent.com",
clientSecret ? "3jVbpfT4GmubFD64svctJSdQ",
project ? "tazjins-infrastructure"
}:
with pkgs;
let
authPatch = runCommand "client_secret.patch" {} ''
export CLIENT_ID='${clientId}'
export CLIENT_SECRET='${clientSecret}'
export PROJECT_ID='${project}'
cat ${./api_client.patch} | ${gettext}/bin/envsubst > $out
'';
discoveryPatch = runCommand "discovery_doc.patch" {} ''
export DISCOVERY_DOC='${./gmail-api.json}'
cat ${./discovery_doc.patch} | ${gettext}/bin/envsubst > $out
'';
in python3Packages.buildPythonApplication rec {
name = "lieer-${version}";
version = "1.0";
src = fetchFromGitHub {
owner = "gauteh";
repo = "lieer";
rev = "v${version}";
sha256 = "1zzylv8xbcrh34bz0s29dawzcyx39lai8y8wk0bl4x75v1jfynvf";
};
patches = [
authPatch
discoveryPatch
./send_scope.patch
];
propagatedBuildInputs = with python3Packages; [
notmuch
oauth2client
google_api_python_client
tqdm
];
}