98 lines
2.8 KiB
Nix
98 lines
2.8 KiB
Nix
{ lib
|
|
, autoreconfHook
|
|
, bc
|
|
, fetchFromGitHub
|
|
, gettext
|
|
, makeWrapper
|
|
, perl
|
|
, python3
|
|
, screen
|
|
, stdenv
|
|
, vim
|
|
, tmux
|
|
}:
|
|
|
|
let
|
|
pythonEnv = python3.withPackages (ps: with ps; [ snack ]);
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "byobu";
|
|
version = "6.12";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "dustinkirkland";
|
|
repo = "byobu";
|
|
rev = finalAttrs.version;
|
|
hash = "sha256-NzC9Njsnz14mfKnERGDZw8O3vux0wnfCKwjUeTBQswc=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
autoreconfHook
|
|
gettext
|
|
makeWrapper
|
|
];
|
|
|
|
buildInputs = [
|
|
perl # perl is needed for `lib/byobu/include/*` scripts
|
|
screen
|
|
tmux
|
|
];
|
|
|
|
doCheck = true;
|
|
strictDeps = true;
|
|
|
|
postPatch = ''
|
|
for file in usr/bin/byobu-export.in usr/lib/byobu/menu; do
|
|
substituteInPlace $file \
|
|
--replace "gettext" "${gettext}/bin/gettext"
|
|
done
|
|
'';
|
|
|
|
postInstall = ''
|
|
# By some reason the po files are not being compiled
|
|
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 --verbose $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 file in $out/bin/byobu*; do
|
|
# We don't use the usual "-wrapped" suffix because arg0 within the shebang
|
|
# scripts points to the filename and byobu matches against this to know
|
|
# which backend to start with
|
|
bname="$(basename $file)"
|
|
mv "$file" "$out/bin/.$bname"
|
|
makeWrapper "$out/bin/.$bname" "$out/bin/$bname" \
|
|
--argv0 $bname \
|
|
--prefix PATH ":" "$out/bin" \
|
|
--set BYOBU_PATH ${lib.makeBinPath [ vim bc ]} \
|
|
--set BYOBU_PYTHON "${pythonEnv}/bin/python"
|
|
done
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://www.byobu.org/";
|
|
description = "Text-based window manager and terminal multiplexer";
|
|
longDescription = ''
|
|
Byobu is a 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 = with lib.licenses; [ gpl3Plus ];
|
|
mainProgram = "byobu";
|
|
maintainers = with lib.maintainers; [ AndersonTorres ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
})
|