A directory-category for terminal emulators
This is a mostly cosmetical commit, in the sense it doesn't change the contents of any package, but reorganizes the overall Nixpkgs expressions. Terminal emulators are an ubiquitous tool for any Unix user; even the beginners are routinely familiarized to it. And, manifestly, there are many implementations of terminal emulators out there, from those traditionally made in C and C++ to those written in Haskell and Go. Terminal emulators deserve more highlight. This commit does that by creating a category for them.
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
From 95c90f302c384f410dc92e64468ac7061b57fe2d Mon Sep 17 00:00:00 2001
|
||||
From: Michael Hoang <enzime@users.noreply.github.com>
|
||||
Date: Fri, 13 Jul 2018 19:03:09 +1000
|
||||
Subject: [PATCH] Add errno.h header which isn't always included automatically.
|
||||
|
||||
---
|
||||
termite.cc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/termite.cc b/termite.cc
|
||||
index 160fe82..13e2572 100644
|
||||
--- a/termite.cc
|
||||
+++ b/termite.cc
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <cmath>
|
||||
+#include <errno.h>
|
||||
#include <functional>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, vte, gtk3, ncurses, pcre2, wrapGAppsHook }:
|
||||
|
||||
let
|
||||
|
||||
# termite requires VTE with some internals exposed
|
||||
# https://github.com/thestinger/vte-ng
|
||||
vte-ng = vte.overrideAttrs (attrs: {
|
||||
patches = attrs.patches or [] ++ [
|
||||
(fetchpatch {
|
||||
name = "0001-expose-functions-for-pausing-unpausing-output.patch";
|
||||
url = "https://github.com/thestinger/vte-ng/commit/342e26574f50dcd40bbeaad9e839c2a6144d0c1c.patch";
|
||||
sha256 = "1b0k9ys545q85vfki417p21kis9f36yd0hyp12phayynss6fn715";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0002-expose-function-for-setting-cursor-position.patch";
|
||||
url = "https://github.com/thestinger/vte-ng/commit/5ae3acb69474fe5bc43767a4a3625e9ed23607a1.patch";
|
||||
sha256 = "091sb44g2pl0zbxnxidpfmsqqc65dmkakhjb0wvlnsjckqalhs89";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0003-add-function-for-setting-the-text-selections.patch";
|
||||
url = "https://github.com/thestinger/vte-ng/commit/742d57ecf15e24f6a5f2133a81b6c70acc8ff03c.patch";
|
||||
sha256 = "12rq3svbj1nzridbssxsvmmb8njky3w8qdnkymz7850b3kqg277x";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0004-add-functions-to-get-set-block-selection-mode.patch";
|
||||
url = "https://github.com/thestinger/vte-ng/commit/08748fd9cb82bd191e5c476b1682ca71f7732572.patch";
|
||||
sha256 = "1cnhd8f7ywdgcyd6xmcd2nn39jjxzkxp4d0zsj2k7m5v74nhcs1g";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0005-expose-function-for-getting-the-selected-text.patch";
|
||||
url = "https://github.com/thestinger/vte-ng/commit/dd74ae7c06e8888af2fc090ac6f8920a9d8227fb.patch";
|
||||
sha256 = "0pbnbkwqxm4p9xsgvqwayvh8srk5z1kyjnigmahf9mlqn7hi6v27";
|
||||
})
|
||||
];
|
||||
});
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "termite";
|
||||
version = "15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thestinger";
|
||||
repo = "termite";
|
||||
rev = "v${version}";
|
||||
sha256 = "0hp1x6lj098m3jgna274wv5dv60lnzg22297di68g4hw9djjyd2k";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# https://github.com/thestinger/termite/pull/516
|
||||
patches = [ ./url_regexp_trailing.patch ./add_errno_header.patch
|
||||
# Fix off-by-one in select_text() on libvte >= 0.55.0
|
||||
# Expected to be included in next release (16).
|
||||
(fetchpatch {
|
||||
url = "https://github.com/thestinger/termite/commit/7e9a93b421b9596f8980645a46ac2ad5468dac06.patch";
|
||||
sha256 = "0vph2m5919f7w1xnc8i6z0j44clsm1chxkfg7l71nahxyfw5yh4j";
|
||||
})
|
||||
] ++ stdenv.lib.optional stdenv.isDarwin ./remove_ldflags_macos.patch;
|
||||
|
||||
makeFlags = [ "VERSION=v${version}" "PREFIX=" "DESTDIR=$(out)" ];
|
||||
|
||||
buildInputs = [ vte-ng gtk3 ncurses pcre2 ];
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook pkgconfig ];
|
||||
|
||||
outputs = [ "out" "terminfo" ];
|
||||
|
||||
passthru = { inherit vte-ng; };
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $terminfo/share
|
||||
mv $out/share/terminfo $terminfo/share/terminfo
|
||||
|
||||
mkdir -p $out/nix-support
|
||||
echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A simple VTE-based terminal";
|
||||
license = licenses.lgpl2Plus;
|
||||
homepage = "https://github.com/thestinger/termite/";
|
||||
maintainers = with maintainers; [ koral ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
From 1b5a6934635c55472eb7949bd87ab3f45fa1b2f3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Hoang <enzime@users.noreply.github.com>
|
||||
Date: Fri, 13 Jul 2018 19:01:51 +1000
|
||||
Subject: [PATCH] Remove --as-needed flag from ld to fix compilation on macOS.
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index b115f42..ab301ba 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -29,7 +29,7 @@ ifeq (${CXX}, clang++)
|
||||
CXXFLAGS += -Wimplicit-fallthrough
|
||||
endif
|
||||
|
||||
-LDFLAGS := -s -Wl,--as-needed ${LDFLAGS}
|
||||
+LDFLAGS := -s -Wl ${LDFLAGS}
|
||||
LDLIBS := ${shell pkg-config --libs ${GTK} ${VTE}}
|
||||
|
||||
termite: termite.cc url_regex.hh util/clamp.hh util/maybe.hh util/memory.hh
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Based on https://github.com/thestinger/termite/pull/516
|
||||
Modified to apply to v13
|
||||
|
||||
From 65a454ffa8e681f3f14729cba7c42e1570a85e8a Mon Sep 17 00:00:00 2001
|
||||
From: Paul Baecher <pbaecher@gmail.com>
|
||||
Date: Thu, 7 Sep 2017 22:58:51 +0200
|
||||
Subject: [PATCH] Do not match punctuation at the end of URLs
|
||||
|
||||
Punctuation at the end of URLs is most likely part of natural language
|
||||
or markup (for example in Markdown). Do not match it as part of the URL.
|
||||
---
|
||||
url_regex.hh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/url_regex.hh b/url_regex.hh
|
||||
index 2ec6be8..3039b53 100644
|
||||
--- a/url_regex.hh
|
||||
+++ b/url_regex.hh
|
||||
@@ -9,7 +9,7 @@
|
||||
#define PORT "(?:\\:[[:digit:]]{1,5})?"
|
||||
#define SCHEME "(?:[[:alpha:]][+-.[:alnum:]]*:)"
|
||||
#define USERPASS USERCHARS_CLASS "+(?:\\:" PASSCHARS_CLASS "+)?"
|
||||
-#define URLPATH "(?:/[[:alnum:]\\Q-_.!~*'();/?:@&=+$,#%\\E]*)?"
|
||||
+#define URLPATH "(?:/[[:alnum:]\\Q-_.!~*'();/?:@&=+$,#%\\E]*(?<![\\Q.,:;()!?\\E]))?"
|
||||
|
||||
const char * const url_regex = SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{ makeWrapper, symlinkJoin, configFile ? null, termite }:
|
||||
|
||||
if configFile == null then termite else symlinkJoin {
|
||||
name = "termite-with-config-${termite.version}";
|
||||
|
||||
paths = [ termite ];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/termite \
|
||||
--add-flags "--config ${configFile}"
|
||||
'';
|
||||
|
||||
passthru.terminfo = termite.terminfo;
|
||||
}
|
||||
Reference in New Issue
Block a user