mailman: init package for Mailman CLI
We already had python3Packages.mailman, but that's only really usable as a library. The only other option was to create a whole Python environment, which was undesirable to install as a system-wide package.
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
''
|
||||
Reference in New Issue
Block a user