Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

byobu: add screen backend #90430

Merged
merged 1 commit into from Oct 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 10 additions & 2 deletions pkgs/development/libraries/newt/default.nix
@@ -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";
Expand All @@ -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";

Expand Down
65 changes: 52 additions & 13 deletions pkgs/tools/misc/byobu/default.nix
@@ -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;
Expand All @@ -11,26 +17,59 @@ 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";

longDescription =
''Byobu is a GPLv3 open source text-based window manager and terminal multiplexer.
It was originally designed to provide elegant enhancements to the otherwise functional,
plain, practical GNU Screen, for the Ubuntu server distribution.
Byobu now includes an enhanced profiles, convenient keybindings,
configuration utilities, and toggle-able system status notifications for both
the GNU Screen window manager and the more modern Tmux terminal multiplexer,
''Byobu is a GPLv3 open source text-based window manager and terminal multiplexer.
It was originally designed to provide elegant enhancements to the otherwise functional,
plain, practical GNU Screen, for the Ubuntu server distribution.
Byobu now includes an enhanced profiles, convenient keybindings,
configuration utilities, and toggle-able system status notifications for both
the GNU Screen window manager and the more modern Tmux terminal multiplexer,
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 ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/python-packages.nix
Expand Up @@ -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 { };
Expand Down