summaryrefslogtreecommitdiff
path: root/pkgs/msmtp
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2025-12-24 18:01:46 -0600
committerAlejandro Soto <alejandro@34project.org>2025-12-24 18:06:03 -0600
commit5365449cbbee823f7f947e146db1a588e17fa2e9 (patch)
tree8993bb75ca9d6ce0189cffc59f63676d40036f6b /pkgs/msmtp
parentff11e502f5c5997581128254dd7843c9e90fd734 (diff)
pkgs/msmtp: update to 25.11
Diffstat (limited to '')
-rw-r--r--pkgs/msmtp/default.nix80
-rw-r--r--pkgs/msmtp/msmtpq-remove-binary-check.patch13
-rw-r--r--pkgs/msmtp/msmtpq-systemd-logging.patch41
-rw-r--r--pkgs/msmtp/paths.patch64
4 files changed, 113 insertions, 85 deletions
diff --git a/pkgs/msmtp/default.nix b/pkgs/msmtp/default.nix
index 23559c5..c16ee3e 100644
--- a/pkgs/msmtp/default.nix
+++ b/pkgs/msmtp/default.nix
@@ -9,36 +9,41 @@
bash,
coreutils,
gnugrep,
+ gnused,
gnutls,
gsasl,
libidn2,
netcat-gnu,
texinfo,
which,
- Security,
withKeyring ? true,
libsecret,
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
systemd,
withScripts ? true,
+ withLibnotify ? true,
+ libnotify,
+ gitUpdater,
+ binlore,
+ msmtp,
}: let
inherit (lib) getBin getExe optionals;
- version = "1.8.22";
+ version = "1.8.32";
src = fetchFromGitHub {
owner = "marlam";
- repo = "msmtp-mirror";
+ repo = "msmtp";
rev = "msmtp-${version}";
- hash = "sha256-Jt/uvGBrYYr6ua6LVPiP0nuRiIkxBJASdgHBNHivzxQ=";
+ hash = "sha256-ofyDtP7KgTKX/O1O4g3OcDwgihDveAiJ5s5GQtSqf28=";
};
- meta = with lib; {
+ meta = {
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;
+ license = lib.licenses.gpl3Plus;
+ maintainers = with lib.maintainers; [peterhoeg];
+ platforms = lib.platforms.unix;
mainProgram = "msmtp";
};
@@ -51,15 +56,25 @@
];
configureFlags =
- ["--sysconfdir=/etc" "--with-libgsasl"]
- ++ optionals stdenv.isDarwin ["--with-macosx-keyring"];
+ [
+ "--sysconfdir=/etc"
+ "--with-libgsasl"
+ ]
+ ++ optionals stdenv.hostPlatform.isDarwin ["--with-macosx-keyring"];
buildInputs =
- [gnutls gsasl libidn2]
- ++ optionals stdenv.isDarwin [Security]
+ [
+ gnutls
+ gsasl
+ libidn2
+ ]
++ optionals withKeyring [libsecret];
- nativeBuildInputs = [autoreconfHook pkg-config texinfo];
+ nativeBuildInputs = [
+ autoreconfHook
+ pkg-config
+ texinfo
+ ];
enableParallelBuilding = true;
@@ -73,7 +88,10 @@
pname = "msmtp-scripts";
inherit version src meta;
- patches = [./paths.patch];
+ patches = [
+ ./msmtpq-remove-binary-check.patch
+ ./msmtpq-systemd-logging.patch
+ ];
postPatch = ''
substituteInPlace scripts/msmtpq/msmtpq \
@@ -112,10 +130,12 @@
binaries
coreutils
gnugrep
+ gnused
netcat-gnu
which
]
- ++ optionals withSystemd [systemd];
+ ++ optionals withSystemd [systemd]
+ ++ optionals withLibnotify [libnotify];
execer =
[
"cannot:${getBin binaries}/bin/msmtp"
@@ -123,11 +143,18 @@
]
++ optionals withSystemd [
"cannot:${getBin systemd}/bin/systemd-cat"
+ ]
+ ++ optionals withLibnotify [
+ "cannot:${getBin libnotify}/bin/notify-send"
];
fix."$MSMTP" = ["msmtp"];
fake.external =
- ["ping"]
- ++ optionals (!withSystemd) ["systemd-cat"];
+ [
+ "ping"
+ ]
+ ++ optionals (!withSystemd) ["systemd-cat"]
+ ++ optionals (!withLibnotify) ["notify-send"];
+ keep.source = ["~/.msmtpqrc"];
};
msmtp-queue = {
@@ -141,11 +168,22 @@
in
if withScripts
then
- symlinkJoin
- {
+ symlinkJoin {
name = "msmtp-${version}";
inherit version meta;
- paths = [binaries scripts];
- passthru = {inherit binaries scripts;};
+ paths = [
+ binaries
+ scripts
+ ];
+ passthru = {
+ inherit binaries scripts src;
+ # msmtpq forwards most of its arguments to msmtp [1].
+ #
+ # [1]: <https://github.com/marlam/msmtp/blob/msmtp-1.8.26/scripts/msmtpq/msmtpq#L301>
+ binlore.out = binlore.synthesize msmtp ''
+ wrapper bin/msmtpq bin/msmtp
+ '';
+ updateScript = gitUpdater {rev-prefix = "msmtp-";};
+ };
}
else binaries
diff --git a/pkgs/msmtp/msmtpq-remove-binary-check.patch b/pkgs/msmtp/msmtpq-remove-binary-check.patch
new file mode 100644
index 0000000..045f71c
--- /dev/null
+++ b/pkgs/msmtp/msmtpq-remove-binary-check.patch
@@ -0,0 +1,13 @@
+diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq
+index bcb384e..9622e47 100755
+--- a/scripts/msmtpq/msmtpq
++++ b/scripts/msmtpq/msmtpq
+@@ -60,8 +60,6 @@ err() { dsp '' "$@" '' ; exit 1 ; }
+ ## export the location of the msmtp executable before running this script (no quotes !!)
+ ## e.g. ( export MSMTP=/path/to/msmtp )
+ MSMTP="${MSMTP:-msmtp}"
+-"$MSMTP" --version >/dev/null 2>&1 || \
+- log_later -e 1 "msmtpq : can't run the msmtp executable [ $MSMTP ]" # if not found - complain ; quit
+ ##
+ ## set the queue var to the location of the msmtp queue directory
+ ## if the queue dir doesn't yet exist, create it (0700)
diff --git a/pkgs/msmtp/msmtpq-systemd-logging.patch b/pkgs/msmtp/msmtpq-systemd-logging.patch
new file mode 100644
index 0000000..55f386b
--- /dev/null
+++ b/pkgs/msmtp/msmtpq-systemd-logging.patch
@@ -0,0 +1,41 @@
+diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq
+index 28d0754..3eaac58 100755
+--- a/scripts/msmtpq/msmtpq
++++ b/scripts/msmtpq/msmtpq
+@@ -182,6 +182,8 @@ if [ -n "$MSMTPQ_LOG" ] ; then
+ unset msmptq_log_dir
+ fi
+
++JOURNAL=@journal@
++
+ umask 077 # set secure permissions on created directories and files
+
+ declare -i CNT # a count of mail(s) currently in the queue
+@@ -214,6 +216,7 @@ on_exit() { # unlock the queue on exit if the lock was
+ ## display msg to user, as well
+ ##
+ log() {
++ local NAME=msmtpq
+ local ARG RC PFX
+ PFX="$('date' +'%Y %d %b %H:%M:%S')"
+ # time stamp prefix - "2008 13 Mar 03:59:45 "
+@@ -233,10 +236,19 @@ log() {
+ done
+ fi
+
++ if [ "$JOURNAL" = "Y" ]; then
++ for ARG; do
++ [ -n "$ARG" ] &&
++ echo "$ARG" | systemd-cat -t "$NAME" -p info
++ done
++ fi
++
+ if [ -n "$RC" ] ; then # an error ; leave w/error return
+ [ -n "$LKD" ] && lock_queue -u # unlock here (if locked)
+ [ -n "$MSMTPQ_LOG" ] && \
+ echo " exit code = $RC" >> "$MSMTPQ_LOG" # logging ok ; send exit code to log
++ [ "$JOURNAL" = "Y" ] && \
++ echo "exit code= $RC" | systemd-cat -t "$NAME" -p emerg
+ exit "$RC" # exit w/return code
+ fi
+ }
diff --git a/pkgs/msmtp/paths.patch b/pkgs/msmtp/paths.patch
deleted file mode 100644
index 9298519..0000000
--- a/pkgs/msmtp/paths.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq
-index d8b4039..1f2a7b5 100755
---- a/scripts/msmtpq/msmtpq
-+++ b/scripts/msmtpq/msmtpq
-@@ -60,8 +60,8 @@ err() { dsp '' "$@" '' ; exit 1 ; }
- ## e.g. ( export MSMTP=/path/to/msmtp )
- if [ "$MSMTP" = "" ] ; then # If MSMTP is unset or empty...
- MSMTP=msmtp
--elif [ ! -x "$MSMTP" ] ; then
-- log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]" # if not found - complain ; quit
-+# elif [ ! -x "$MSMTP" ] ; then
-+# log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]" # if not found - complain ; quit
- fi
- ##
- ## set the queue var to the location of the msmtp queue directory
-@@ -71,7 +71,7 @@ fi
- ## ( chmod 0700 msmtp.queue )
- ##
- ## the queue dir - export this variable to reflect where you'd like it to be (no quotes !!)
--Q=${Q:-~/.msmtp.queue}
-+Q=${MSMTP_QUEUE:-~/.msmtp.queue}
- [ -d "$Q" ] || mkdir -m 0700 -p "$Q" || \
- err '' "msmtpq : can't find or create msmtp queue directory [ $Q ]" '' # if not present - complain ; quit
- ##
-@@ -85,8 +85,10 @@ Q=${Q:-~/.msmtp.queue}
- ##
- ## the queue log file - export this variable to change where logs are stored (but no quotes !!)
- ## Set it to "" (empty string) to disable logging.
--[ -v LOG ] || LOG=~/log/msmtp.queue.log
-+LOG=${MSMTP_LOG:-~/log/msmtp.queue.log}
- [ -d "$(dirname "$LOG")" ] || mkdir -p "$(dirname "$LOG")"
-+
-+JOURNAL=@journal@
- ## ======================================================================================
-
- ## msmtpq can use the following environment variables :
-@@ -139,6 +141,7 @@ on_exit() { # unlock the queue on exit if the lock was
- ## display msg to user, as well
- ##
- log() {
-+ local NAME=msmtpq
- local ARG RC PFX
- PFX="$('date' +'%Y %d %b %H:%M:%S')"
- # time stamp prefix - "2008 13 Mar 03:59:45 "
-@@ -156,10 +159,19 @@ log() {
- done
- fi
-
-+ if [ "$JOURNAL" = "Y" ]; then
-+ for ARG; do
-+ [ -n "$ARG" ] &&
-+ echo "$ARG" | systemd-cat -t "$NAME" -p info
-+ done
-+ fi
-+
- if [ -n "$RC" ] ; then # an error ; leave w/error return
- [ -n "$LKD" ] && lock_queue -u # unlock here (if locked)
- [ -n "$LOG" ] && \
- echo " exit code = $RC" >> "$LOG" # logging ok ; send exit code to log
-+ [ "$JOURNAL" = "Y" ] && \
-+ echo "exit code= $RC" | systemd-cat -t "$NAME" -p emerg
- exit "$RC" # exit w/return code
- fi
- }