nixpkgs/pkgs/applications/networking/msmtp/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

137 lines
3.3 KiB
Nix
Raw Normal View History

2022-08-06 02:34:01 +00:00
{ resholve
, stdenv
, symlinkJoin
, lib
, fetchFromGitHub
, autoreconfHook
, pkg-config
, bash
, coreutils
, gnugrep
, gnutls
, gsasl
, libidn2
, netcat-gnu
, texinfo
, which
, Security
, withKeyring ? true
2022-12-16 19:12:07 +00:00
, libsecret
, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
2022-12-16 19:12:07 +00:00
, systemd
, withScripts ? true
2022-08-06 02:34:01 +00:00
}:
let
2022-08-06 02:34:01 +00:00
inherit (lib) getBin getExe optionals;
2022-08-12 02:53:45 +00:00
version = "1.8.22";
2022-08-06 02:34:01 +00:00
src = fetchFromGitHub {
owner = "marlam";
repo = "msmtp-mirror";
rev = "msmtp-${version}";
2022-08-12 02:53:45 +00:00
hash = "sha256-Jt/uvGBrYYr6ua6LVPiP0nuRiIkxBJASdgHBNHivzxQ=";
};
2022-08-06 02:34:01 +00:00
meta = with lib; {
description = "Simple and easy to use SMTP client with excellent sendmail compatibility";
homepage = "https://marlam.de/msmtp/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.unix;
2023-12-17 17:24:48 +00:00
mainProgram = "msmtp";
2022-08-06 02:34:01 +00:00
};
2022-12-16 19:12:07 +00:00
binaries = stdenv.mkDerivation {
2022-08-06 02:34:01 +00:00
pname = "msmtp-binaries";
inherit version src meta;
2022-08-06 02:34:01 +00:00
configureFlags = [ "--sysconfdir=/etc" "--with-libgsasl" ]
++ optionals stdenv.isDarwin [ "--with-macosx-keyring" ];
2022-08-06 02:34:01 +00:00
buildInputs = [ gnutls gsasl libidn2 ]
++ optionals stdenv.isDarwin [ Security ]
++ optionals withKeyring [ libsecret ];
2022-08-06 02:34:01 +00:00
nativeBuildInputs = [ autoreconfHook pkg-config texinfo ];
2022-08-06 02:34:01 +00:00
enableParallelBuilding = true;
2022-08-06 02:34:01 +00:00
postInstall = ''
install -Dm444 -t $out/share/doc/msmtp doc/*.example
ln -s msmtp $out/bin/sendmail
'';
};
2022-12-16 19:12:07 +00:00
scripts = resholve.mkDerivation {
2022-08-06 02:34:01 +00:00
pname = "msmtp-scripts";
inherit version src meta;
2022-08-06 02:34:01 +00:00
patches = [ ./paths.patch ];
2015-01-09 16:31:10 +00:00
2022-08-06 02:34:01 +00:00
postPatch = ''
substituteInPlace scripts/msmtpq/msmtpq \
--replace @journal@ ${if withSystemd then "Y" else "N"}
'';
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm555 -t $out/bin scripts/msmtpq/msmtp*
install -Dm444 -t $out/share/doc/msmtp/scripts scripts/msmtpq/README*
install -Dm444 -t $out/share/doc/msmtp/scripts scripts/{find_alias,msmtpqueue,set_sendmail}/*
if grep --quiet -E '@.+@' $out/bin/*; then
echo "Unsubstituted variables found. Aborting!"
grep -E '@.+@' $out/bin/*
exit 1
fi
runHook postInstall
'';
solutions = {
msmtpq = {
scripts = [ "bin/msmtpq" ];
interpreter = getExe bash;
inputs = [
binaries
coreutils
gnugrep
netcat-gnu
which
] ++ optionals withSystemd [ systemd ];
execer = [
"cannot:${getBin binaries}/bin/msmtp"
"cannot:${getBin netcat-gnu}/bin/nc"
] ++ optionals withSystemd [
"cannot:${getBin systemd}/bin/systemd-cat"
];
fix."$MSMTP" = [ "msmtp" ];
fake.external = [ "ping" ]
++ optionals (!withSystemd) [ "systemd-cat" ];
};
msmtp-queue = {
scripts = [ "bin/msmtp-queue" ];
interpreter = getExe bash;
inputs = [ "${placeholder "out"}/bin" ];
execer = [ "cannot:${placeholder "out"}/bin/msmtpq" ];
};
};
};
2022-08-06 02:34:01 +00:00
in
if withScripts then
symlinkJoin
{
name = "msmtp-${version}";
inherit version meta;
paths = [ binaries scripts ];
passthru = { inherit binaries scripts; };
} else binaries