byobu: add support for the screen backend

This commit is contained in:
Nicolas Berbiche 2020-10-26 20:52:46 -04:00
parent f6cd17269e
commit 3ac1ffe8b2
No known key found for this signature in database
GPG key ID: F3308ADE984B83CB
3 changed files with 64 additions and 15 deletions

View file

@ -1,5 +1,8 @@
{ fetchurl, stdenv, slang, popt }:
{ lib, fetchurl, stdenv, slang, popt, python }:
let
pythonIncludePath = "${lib.getDev python}/include/python";
in
stdenv.mkDerivation rec {
pname = "newt";
version = "0.52.21";
@ -11,9 +14,14 @@ stdenv.mkDerivation rec {
patchPhase = ''
sed -i -e s,/usr/bin/install,install, -e s,-I/usr/include/slang,, Makefile.in po/Makefile
substituteInPlace configure \
--replace "/usr/include/python" "${pythonIncludePath}"
substituteInPlace configure.ac \
--replace "/usr/include/python" "${pythonIncludePath}"
'';
buildInputs = [ slang popt ];
buildInputs = [ slang popt python ];
NIX_LDFLAGS = "-lncurses";

View file

@ -1,5 +1,11 @@
{ stdenv, fetchurl, python3, perl, textual-window-manager }:
{ stdenv, fetchurl, makeWrapper
, ncurses, python3, perl, textual-window-manager
, gettext, vim, bc, screen }:
let
inherit (stdenv) lib;
pythonEnv = python3.withPackages (ps: with ps; [ snack ]);
in
stdenv.mkDerivation rec {
version = "5.133";
name = "byobu-" + version;
@ -11,10 +17,43 @@ stdenv.mkDerivation rec {
doCheck = true;
buildInputs = [ python3 perl ];
propagatedBuildInputs = [ textual-window-manager ];
buildInputs = [ perl makeWrapper gettext ];
propagatedBuildInputs = [ textual-window-manager screen ];
meta = {
postPatch = ''
substituteInPlace usr/bin/byobu-export.in \
--replace "gettext" "${gettext}/bin/gettext"
substituteInPlace usr/lib/byobu/menu \
--replace "gettext" "${gettext}/bin/gettext"
'';
postInstall = ''
# Byobu does not compile its po files for some reason
for po in po/*.po; do
lang=''${po#po/}
lang=''${lang%.po}
# Path where byobu looks for translations as observed in the source code and strace
mkdir -p $out/share/byobu/po/$lang/LC_MESSAGES/
msgfmt $po -o $out/share/byobu/po/$lang/LC_MESSAGES/byobu.mo
done
# Override the symlinks otherwise they mess with the wrapping
cp --remove-destination $out/bin/byobu $out/bin/byobu-screen
cp --remove-destination $out/bin/byobu $out/bin/byobu-tmux
for i in $out/bin/byobu*; do
# We don't use the usual ".$package-wrapped" because arg0 within the shebang scripts
# points to the filename and byobu matches against this to know which backend
# to start with
file=".$(basename $i)"
mv $i $out/bin/$file
makeWrapper "$out/bin/$file" "$out/bin/$(basename $i)" --argv0 $(basename $i) \
--set BYOBU_PATH ${lib.escapeShellArg (lib.makeBinPath [ vim bc ])} \
--set BYOBU_PYTHON "${pythonEnv}/bin/python"
done
'';
meta = with stdenv.lib; {
homepage = "https://launchpad.net/byobu/";
description = "Text-based window manager and terminal multiplexer";
@ -28,9 +67,9 @@ stdenv.mkDerivation rec {
and works on most Linux, BSD, and Mac distributions.
'';
license = stdenv.lib.licenses.gpl3;
license = licenses.gpl3;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.qknight ];
platforms = platforms.unix;
maintainers = with maintainers; [ qknight berbiche ];
};
}

View file

@ -6610,6 +6610,8 @@ in {
smugpy = callPackage ../development/python-modules/smugpy { };
snack = toPythonModule (pkgs.newt.override { inherit (self) python; });
snakebite = callPackage ../development/python-modules/snakebite { };
snakeviz = callPackage ../development/python-modules/snakeviz { };