Unverified Commit e0d98f90 authored by Franz Pletz's avatar Franz Pletz Committed by GitHub
Browse files

Merge pull request #241030 from Enzime/tmux-terminfo

parents 94cf97cc 3ec619c8
Loading
Loading
Loading
Loading
+22 −5
Original line number Diff line number Diff line
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, autoreconfHook
, bison
, libevent
, ncurses
, pkg-config
, runCommand
, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd
, withUtf8proc ? true, utf8proc # gets Unicode updates faster than glibc
, withUtempter ? stdenv.isLinux && !stdenv.hostPlatform.isMusl, libutempter
@@ -23,7 +23,7 @@ let

in

stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
  pname = "tmux";
  version = "3.3a";

@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
  src = fetchFromGitHub {
    owner = "tmux";
    repo = "tmux";
    rev = version;
    rev = finalAttrs.version;
    sha256 = "sha256-SygHxTe7N4y7SdzKixPFQvqRRL57Fm8zWYHfTpW+yVY=";
  };

@@ -65,8 +65,25 @@ stdenv.mkDerivation rec {
  postInstall = ''
    mkdir -p $out/share/bash-completion/completions
    cp -v ${bashCompletion}/completions/tmux $out/share/bash-completion/completions/tmux
  '' + lib.optionalString stdenv.isDarwin ''
    mkdir $out/nix-support
    echo "${finalAttrs.passthru.terminfo}" >> $out/nix-support/propagated-user-env-packages
  '';

  passthru = {
    terminfo = runCommand "tmux-terminfo" { nativeBuildInputs = [ ncurses ]; } (if stdenv.isDarwin then ''
      mkdir -p $out/share/terminfo/74
      cp -v ${ncurses}/share/terminfo/74/tmux $out/share/terminfo/74
      # macOS ships an old version (5.7) of ncurses which does not include tmux-256color so we need to provide it from our ncurses.
      # However, due to a bug in ncurses 5.7, we need to first patch the terminfo before we can use it with macOS.
      # https://gpanders.com/blog/the-definitive-guide-to-using-tmux-256color-on-macos/
      tic -o $out/share/terminfo -x <(TERMINFO_DIRS=${ncurses}/share/terminfo infocmp -x tmux-256color | sed 's|pairs#0x10000|pairs#32767|')
    '' else ''
      mkdir -p $out/share/terminfo/t
      ln -sv ${ncurses}/share/terminfo/t/{tmux,tmux-256color,tmux-direct} $out/share/terminfo/t
    '');
  };

  meta = {
    homepage = "https://tmux.github.io/";
    description = "Terminal multiplexer";
@@ -82,9 +99,9 @@ stdenv.mkDerivation rec {
        * Terminal locking, manually or after a timeout.
        * A clean, easily extended, BSD-licensed codebase, under active development.
    '';
    changelog = "https://github.com/tmux/tmux/raw/${version}/CHANGES";
    changelog = "https://github.com/tmux/tmux/raw/${finalAttrs.version}/CHANGES";
    license = lib.licenses.bsd3;
    platforms = lib.platforms.unix;
    maintainers = with lib.maintainers; [ thammers fpletz SuperSandro2000 srapenne ];
  };
}
})