diff options
Diffstat (limited to 'pkgs/servers/mail')
-rw-r--r-- | pkgs/servers/mail/mailman/default.nix | 9 | ||||
-rw-r--r-- | pkgs/servers/mail/mailman/wrapped.nix | 20 |
2 files changed, 23 insertions, 6 deletions
diff --git a/pkgs/servers/mail/mailman/default.nix b/pkgs/servers/mail/mailman/default.nix index 8e763800f650..d6b73aea3da5 100644 --- a/pkgs/servers/mail/mailman/default.nix +++ b/pkgs/servers/mail/mailman/default.nix @@ -28,15 +28,12 @@ buildPythonPackage rec { ''; # Mailman assumes that those scripts in $out/bin are Python scripts. Wrapping - # them in shell code breaks this assumption. The proper way to use mailman is - # to create a specialized python interpreter: - # - # python37.withPackages (ps: [ps.mailman]) + # them in shell code breaks this assumption. Use the wrapped version (see + # wrapped.nix) if you need the CLI (rather than the Python library). # # This gives a properly wrapped 'mailman' command plus an interpreter that # has all the necessary search paths to execute unwrapped 'master' and - # 'runner' scripts. The setup is a little tricky, but fortunately NixOS is - # about to get a OS module that takes care of those details. + # 'runner' scripts. dontWrapPythonPrograms = true; meta = { diff --git a/pkgs/servers/mail/mailman/wrapped.nix b/pkgs/servers/mail/mailman/wrapped.nix new file mode 100644 index 000000000000..2a620763d876 --- /dev/null +++ b/pkgs/servers/mail/mailman/wrapped.nix @@ -0,0 +1,20 @@ +{ runCommand, lib, makeWrapper, python3 +, archivers ? [ python3.pkgs.mailman-hyperkitty ] +}: + +let + inherit (python3.pkgs) makePythonPath mailman; +in + +runCommand "${mailman.name}-wrapped" { + inherit (mailman) meta; + buildInputs = [ makeWrapper ]; + passthru = mailman.passthru // { unwrapped = mailman; }; +} '' + mkdir -p "$out/bin" + cd "${mailman}/bin" + for exe in *; do + makeWrapper "${mailman}/bin/$exe" "$out/bin/$exe" \ + --set PYTHONPATH ${makePythonPath ([ mailman ] ++ archivers)} + done +'' |