nixpkgs/pkgs/tools/misc/byobu/default.nix
Profpatsch 4a7f99d55d treewide: with stdenv.lib; in meta -> with lib;
Part of: https://github.com/NixOS/nixpkgs/issues/108938

meta = with stdenv.lib;

is a widely used pattern. We want to slowly remove
the `stdenv.lib` indirection and encourage people
to use `lib` directly. Thus let’s start with the meta
field.

This used a rewriting script to mostly automatically
replace all occurances of this pattern, and add the
`lib` argument to the package header if it doesn’t
exist yet.

The script in its current form is available at
https://cs.tvl.fyi/depot@2f807d7f141068d2d60676a89213eaa5353ca6e0/-/blob/users/Profpatsch/nixpkgs-rewriter/default.nix
2021-01-11 10:38:22 +01:00

76 lines
2.7 KiB
Nix

{ lib, 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;
src = fetchurl {
url = "https://launchpad.net/byobu/trunk/${version}/+download/byobu_${version}.orig.tar.gz";
sha256 = "0qvmmdnvwqbgbhn5c8asmrmjhclcl029py2d2zvmd7h5ij7s93jd";
};
doCheck = true;
buildInputs = [ perl makeWrapper gettext ];
propagatedBuildInputs = [ textual-window-manager screen ];
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 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,
and works on most Linux, BSD, and Mac distributions.
'';
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ qknight berbiche ];
};
}