From 951025ec921a83d9ade36252b2fdc6da9f469c03 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Wed, 31 Jul 2024 20:15:44 -0600 Subject: home/mail: patch msmtp to support YKCS12 --- pkgs/msmtp/default.nix | 140 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 pkgs/msmtp/default.nix (limited to 'pkgs/msmtp/default.nix') diff --git a/pkgs/msmtp/default.nix b/pkgs/msmtp/default.nix new file mode 100644 index 0000000..18036f5 --- /dev/null +++ b/pkgs/msmtp/default.nix @@ -0,0 +1,140 @@ +{ resholve +, stdenv +, symlinkJoin +, lib +, fetchFromGitHub +, autoreconfHook +, pkg-config +, bash +, coreutils +, gnugrep +, gnutls +, gsasl +, libidn2 +, netcat-gnu +, texinfo +, which +, Security +, withKeyring ? true +, libsecret +, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd +, systemd +, withScripts ? true +}: + +let + inherit (lib) getBin getExe optionals; + + version = "1.8.22"; + + src = fetchFromGitHub { + owner = "marlam"; + repo = "msmtp-mirror"; + rev = "msmtp-${version}"; + hash = "sha256-Jt/uvGBrYYr6ua6LVPiP0nuRiIkxBJASdgHBNHivzxQ="; + }; + + 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; + mainProgram = "msmtp"; + }; + + binaries = stdenv.mkDerivation { + pname = "msmtp-binaries"; + inherit version src meta; + + patches = [ + ./0001-msmtp-run-passwordeval-if-tls_key_file-is-provided-e.patch + ]; + + configureFlags = [ "--sysconfdir=/etc" "--with-libgsasl" ] + ++ optionals stdenv.isDarwin [ "--with-macosx-keyring" ]; + + buildInputs = [ gnutls gsasl libidn2 ] + ++ optionals stdenv.isDarwin [ Security ] + ++ optionals withKeyring [ libsecret ]; + + nativeBuildInputs = [ autoreconfHook pkg-config texinfo ]; + + enableParallelBuilding = true; + + postInstall = '' + install -Dm444 -t $out/share/doc/msmtp doc/*.example + ln -s msmtp $out/bin/sendmail + ''; + }; + + scripts = resholve.mkDerivation { + pname = "msmtp-scripts"; + inherit version src meta; + + patches = [ ./paths.patch ]; + + 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" ]; + }; + }; + }; + +in +if withScripts then + symlinkJoin + { + name = "msmtp-${version}"; + inherit version meta; + paths = [ binaries scripts ]; + passthru = { inherit binaries scripts; }; + } else binaries -- cgit v1.2.3