From 5f29e9fdbfe0ac069c0348084ca169c59cda3ddc Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Mon, 1 May 2017 16:33:15 +0800 Subject: [PATCH] msmtp: add nonblocking support --- .../applications/networking/msmtp/default.nix | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix index 85e5abdc9b6e..74beba7be49e 100644 --- a/pkgs/applications/networking/msmtp/default.nix +++ b/pkgs/applications/networking/msmtp/default.nix @@ -1,11 +1,21 @@ -{ stdenv, lib, fetchurl, autoreconfHook, pkgconfig +{ stdenv, lib, fetchurl, fetchFromGitHub, autoreconfHook, pkgconfig , openssl, netcat-gnu, gnutls, gsasl, libidn, Security -, systemd ? null }: +, systemd ? null, eject ? null }: let tester = "n"; # {x| |p|P|n|s} journal = if stdenv.isLinux then "y" else "n"; + # preferNonBlock = stdenv.isLinux; + preferNonBlock = false; + + nonblock = fetchFromGitHub { + owner = "Stebalien"; + repo = "msmtp-queue"; + rev = "07032a4e4c8ea0d2364641c959db0c60f52423c7"; + sha256 = "0g2aph30007spkdwxljrlr2bliivf9nrdis3d3jvjpx8l6k60rr9"; + }; + in stdenv.mkDerivation rec { name = "msmtp-${version}"; version = "1.6.6"; @@ -20,13 +30,17 @@ in stdenv.mkDerivation rec { ]; buildInputs = [ openssl gnutls gsasl libidn ] - ++ stdenv.lib.optional stdenv.isDarwin Security; + ++ lib.optional stdenv.isDarwin Security + ++ lib.optionals preferNonBlock [ nonblock eject ]; nativeBuildInputs = [ autoreconfHook pkgconfig ]; + enableParallelBuilding = true; + configureFlags = stdenv.lib.optional stdenv.isDarwin [ "--with-macosx-keyring" ]; postInstall = '' + ${lib.optionalString (!preferNonBlock) '' substitute scripts/msmtpq/msmtpq $out/bin/msmtpq \ --replace @msmtp@ $out/bin/msmtp \ --replace @nc@ ${netcat-gnu}/bin/nc \ @@ -36,6 +50,23 @@ in stdenv.mkDerivation rec { substitute scripts/msmtpq/msmtp-queue $out/bin/msmtp-queue \ --replace @msmtpq@ $out/bin/msmtpq + ''} + ${lib.optionalString preferNonBlock '' + mkdir -p $out/lib/systemd/user + cp ${nonblock}/msmtp* $out/bin/ + cp ${nonblock}/systemd/* $out/lib/systemd/user + for f in $out/bin/msmtpq* ; do + sed $f -i -r \ + -e 's|^QUEUE_DIR.*|QUEUE_DIR="''${MSMTP_QUEUE:-''${XDG_DATA_HOME:-$HOME/.local/share}/mail.queue}"|' \ + -e 's|^CONFIG.*|CONFIG="''${XDG_CONFIG_HOME:-$HOME/.config}/msmtprc"|' \ + -e 's| flock | ${eject}/bin/flock |' + done + for f in $out/lib/systemd/user/* ; do + substituteInPlace $f \ + --replace /usr/local $out \ + --replace .local/share/mail.queue .cache/msmtp/queue + done + ''} chmod +x $out/bin/* '';