about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/modules/programs/nylas-mail.nix37
-rw-r--r--pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix136
-rw-r--r--pkgs/top-level/all-packages.nix2
4 files changed, 176 insertions, 0 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index c43096deb293..69bb69c8e201 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -262,6 +262,7 @@
   joelmo = "Joel Moberg <joel.moberg@gmail.com>";
   joelteon = "Joel Taylor <me@joelt.io>";
   johbo = "Johannes Bornhold <johannes@bornhold.name>";
+  johnramsden = "John Ramsden <johnramsden@riseup.net>";
   joko = "Ioannis Koutras <ioannis.koutras@gmail.com>";
   jonafato = "Jon Banafato <jon@jonafato.com>";
   jpbernardy = "Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>";
diff --git a/nixos/modules/programs/nylas-mail.nix b/nixos/modules/programs/nylas-mail.nix
new file mode 100644
index 000000000000..9a6cf755f2a2
--- /dev/null
+++ b/nixos/modules/programs/nylas-mail.nix
@@ -0,0 +1,37 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.nylas-mail;
+  defaultUser = "nylas-mail";
+in {
+  ###### interface
+  options = {
+    services.nylas-mail = {
+
+      enable = mkEnableOption ''
+        nylas-mail - Open-source mail client built on the modern web with Electron, React, and Flux
+      '';
+
+      gnome3-keyring = mkOption {
+        type = types.bool;
+        default = true;
+        description = "Enable gnome3 keyring for nylas-mail.";
+      };
+    };
+  };
+
+
+  ###### implementation
+
+  config = mkIf cfg.enable {
+
+    environment.systemPackages = [ pkgs.nylas-mail-bin ];
+
+    services.gnome3.gnome-keyring = mkIf cfg.gnome3-keyring {
+      enable = true;
+    };
+
+  };
+}
diff --git a/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix b/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix
new file mode 100644
index 000000000000..4c768325fee9
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix
@@ -0,0 +1,136 @@
+{ dpkg, fetchurl, lib, pkgs, stdenv, config
+, alsaLib
+, atk
+, cairo
+, coreutils
+, cups
+, dbus
+, desktop_file_utils
+, expat
+, fontconfig
+, freetype
+, gcc-unwrapped
+, gdk_pixbuf
+, glib
+, gnome2
+, libgcrypt
+, libgnome_keyring
+, libnotify
+, makeWrapper
+, nodejs
+, nspr
+, nss
+, pango
+, python2
+, udev
+, wget
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  name = "${pkgname}-${version}";
+  pkgname = "nylas-mail-bin";
+  version = "2.0.32";
+  subVersion = "fec7941";
+
+  src =
+    if stdenv.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://edgehill.s3-us-west-2.amazonaws.com/${version}-${subVersion}/linux-deb/x64/NylasMail.deb";
+        sha256 = "40060aa1dc3b5187b8ed4a07b9de3427e3c5a291df98c2c82395647fa2aa4ada";
+      }
+    else
+      throw "NylasMail is not supported on ${stdenv.system}";
+
+  propagatedBuildInputs = [
+    alsaLib
+    atk
+    cairo
+    coreutils
+    cups
+    dbus
+    desktop_file_utils
+    expat
+    fontconfig
+    freetype
+    gcc-unwrapped
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gnome2.gtk
+    libgnome_keyring
+    libnotify
+    nodejs
+    nspr
+    nss
+    pango
+    python2
+    udev
+    wget
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxkbfile
+  ];
+
+
+  buildInputs = [ gnome2.gnome_keyring ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out
+
+    ${dpkg}/bin/dpkg-deb -x $src unpacked
+    mv unpacked/usr/* $out/
+
+    # Fix path in desktop file
+    substituteInPlace $out/share/applications/nylas-mail.desktop \
+      --replace /usr/bin/nylas-mail $out/bin/nylas-mail
+
+    # Patch librariess
+    noderp=$(patchelf --print-rpath $out/share/nylas-mail/libnode.so)
+    patchelf --set-rpath $noderp:$out/lib:${stdenv.cc.cc.lib}/lib:${xorg.libxkbfile.out}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/libnode.so
+
+    ffrp=$(patchelf --print-rpath $out/share/nylas-mail/libffmpeg.so)
+    patchelf --set-rpath $ffrp:$out/lib:${stdenv.cc.cc.lib}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/libffmpeg.so
+
+    # Patch binaries
+    binrp=$(patchelf --print-rpath $out/share/nylas-mail/nylas)
+    patchelf --interpreter $(cat "$NIX_CC"/nix-support/dynamic-linker) \
+      --set-rpath $binrp:$out/lib:${stdenv.cc.cc.lib}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/nylas
+
+    wrapProgram $out/share/nylas-mail/nylas --set LD_LIBRARY_PATH "${xorg.libxkbfile}/lib:${pkgs.gnome3.libgnome_keyring}/lib";
+
+    # Fix path to bash so apm can install plugins.
+    substituteInPlace $out/share/nylas-mail/resources/apm/bin/apm \
+      --replace /bin/bash ${stdenv.shell}
+
+    wrapProgram $out/share/nylas-mail/resources/apm/bin/apm \
+      --set PATH "${coreutils}/bin"
+    patchelf --interpreter $(cat "$NIX_CC"/nix-support/dynamic-linker) \
+      --set-rpath ${gcc-unwrapped.lib}/lib $out/share/nylas-mail/resources/apm/bin/node
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open-source mail client built on the modern web with Electron, React, and Flux";
+    longDescription = ''
+      Nylas Mail is an open-source mail client built on the modern web with Electron, React, and Flux. It is designed to be extensible, so it's easy to create new experiences and workflows around email. Nylas Mail can be enabled with it's requirements by enabling 'services.nylas-mail.enable=true'. Alternatively, make sure to have services.gnome3.gnome-keyring.enable = true; in your configuration.nix before running nylas-mail. If you happen to miss this step, you should remove ~/.nylas-mail and "~/.config/Nylas Mail" for a blank setup".
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ johnramsden ];
+    homepage = https://nylas.com;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3b9b325ea71c..316076f3fe86 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -16196,6 +16196,8 @@ with pkgs;
 
   thinkingRock = callPackage ../applications/misc/thinking-rock { };
 
+  nylas-mail-bin = callPackage ../applications/networking/mailreaders/nylas-mail-bin { };
+
   thunderbird = callPackage ../applications/networking/mailreaders/thunderbird {
     inherit (gnome2) libIDL;
     libpng = libpng_apng;