diff options
author | AndersonTorres <torres.anderson.85@protonmail.com> | 2020-10-27 22:38:58 -0300 |
---|---|---|
committer | AndersonTorres <torres.anderson.85@protonmail.com> | 2020-10-28 10:22:39 -0300 |
commit | 2bb3a9da24ca60d9f5bed69f679a1ec50dbdf997 (patch) | |
tree | 23f671aff1d1de5a1530a39004fc373e045a4504 /pkgs/applications/terminal-emulators | |
parent | c3feda093d342da8f12ac710f64ac341812bb455 (diff) |
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.
Diffstat (limited to 'pkgs/applications/terminal-emulators')
58 files changed, 2734 insertions, 0 deletions
diff --git a/pkgs/applications/terminal-emulators/alacritty/default.nix b/pkgs/applications/terminal-emulators/alacritty/default.nix new file mode 100644 index 000000000000..72e00cb15a70 --- /dev/null +++ b/pkgs/applications/terminal-emulators/alacritty/default.nix @@ -0,0 +1,142 @@ +{ stdenv +, lib +, fetchFromGitHub +, rustPlatform + +, cmake +, gzip +, installShellFiles +, makeWrapper +, ncurses +, pkgconfig +, python3 + +, expat +, fontconfig +, freetype +, libGL +, libX11 +, libXcursor +, libXi +, libXrandr +, libXxf86vm +, libxcb +, libxkbcommon +, wayland +, xdg_utils + + # Darwin Frameworks +, AppKit +, CoreGraphics +, CoreServices +, CoreText +, Foundation +, OpenGL +}: +let + rpathLibs = [ + expat + fontconfig + freetype + libGL + libX11 + libXcursor + libXi + libXrandr + libXxf86vm + libxcb + ] ++ lib.optionals stdenv.isLinux [ + libxkbcommon + wayland + ]; +in +rustPlatform.buildRustPackage rec { + pname = "alacritty"; + version = "0.5.0"; + + src = fetchFromGitHub { + owner = "alacritty"; + repo = pname; + rev = "v${version}"; + sha256 = "1948j57xhqvc5y876s929x9rhd6j0xnw5c91g1zqw2rfncn602g2"; + }; + + cargoSha256 = "17lyzcj07f0vyki3091vgjd0w8ki11sw5m8gb3bxdph1dl04rria"; + + nativeBuildInputs = [ + cmake + gzip + installShellFiles + makeWrapper + ncurses + pkgconfig + python3 + ]; + + buildInputs = rpathLibs + ++ lib.optionals stdenv.isDarwin [ + AppKit + CoreGraphics + CoreServices + CoreText + Foundation + OpenGL + ]; + + outputs = [ "out" "terminfo" ]; + + postPatch = '' + substituteInPlace alacritty/src/config/mouse.rs \ + --replace xdg-open ${xdg_utils}/bin/xdg-open + ''; + + installPhase = '' + runHook preInstall + + install -D $releaseDir/alacritty $out/bin/alacritty + + '' + ( + if stdenv.isDarwin then '' + mkdir $out/Applications + cp -r extra/osx/Alacritty.app $out/Applications + ln -s $out/bin $out/Applications/Alacritty.app/Contents/MacOS + '' else '' + install -D extra/linux/Alacritty.desktop -t $out/share/applications/ + install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg + + # patchelf generates an ELF that binutils' "strip" doesn't like: + # strip: not enough room for program headers, try linking with -N + # As a workaround, strip manually before running patchelf. + strip -S $out/bin/alacritty + + patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/alacritty + '' + ) + '' + + installShellCompletion --zsh extra/completions/_alacritty + installShellCompletion --bash extra/completions/alacritty.bash + installShellCompletion --fish extra/completions/alacritty.fish + + install -dm 755 "$out/share/man/man1" + gzip -c extra/alacritty.man > "$out/share/man/man1/alacritty.1.gz" + + install -Dm 644 alacritty.yml $out/share/doc/alacritty.yml + + install -dm 755 "$terminfo/share/terminfo/a/" + tic -xe alacritty,alacritty-direct -o "$terminfo/share/terminfo" extra/alacritty.info + mkdir -p $out/nix-support + echo "$terminfo" >> $out/nix-support/propagated-user-env-packages + + runHook postInstall + ''; + + dontPatchELF = true; + + meta = with lib; { + description = "A cross-platform, GPU-accelerated terminal emulator"; + homepage = "https://github.com/alacritty/alacritty"; + license = licenses.asl20; + maintainers = with maintainers; [ filalex77 mic92 cole-h ma27 ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/terminal-emulators/aminal/default.nix b/pkgs/applications/terminal-emulators/aminal/default.nix new file mode 100644 index 000000000000..7f04a93d6a32 --- /dev/null +++ b/pkgs/applications/terminal-emulators/aminal/default.nix @@ -0,0 +1,69 @@ +{ buildGoPackage +, Carbon +, Cocoa +, Kernel +, fetchFromGitHub +, lib +, mesa_glu +, stdenv +, xorg +}: + +buildGoPackage rec { + pname = "aminal"; + version = "0.9.0"; + + goPackagePath = "github.com/liamg/aminal"; + + buildInputs = + lib.optionals stdenv.isLinux [ + mesa_glu + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXrandr + xorg.libXxf86vm + ] ++ lib.optionals stdenv.isDarwin [ Carbon Cocoa Kernel ]; + + src = fetchFromGitHub { + owner = "liamg"; + repo = "aminal"; + rev = "v${version}"; + sha256 = "0syv9md7blnl6i19zf8s1xjx5vfz6s755fxyg2ply0qc1pwhsj8n"; + }; + + preBuild = '' + buildFlagsArray=("-ldflags=-X ${goPackagePath}/version.Version=${version}") + ''; + + meta = with lib; { + description = "Golang terminal emulator from scratch"; + longDescription = '' + Aminal is a modern terminal emulator for Mac/Linux implemented in Golang + and utilising OpenGL. + + The project is experimental at the moment, so you probably won't want to + rely on Aminal as your main terminal for a while. + + Features: + - Unicode support + - OpenGL rendering + - Customisation options + - True colour support + - Support for common ANSI escape sequences a la xterm + - Scrollback buffer + - Clipboard access + - Clickable URLs + - Multi platform support (Windows coming soon...) + - Sixel support + - Hints/overlays + - Built-in patched fonts for powerline + - Retina display support + ''; + homepage = "https://github.com/liamg/aminal"; + license = licenses.gpl3; + maintainers = with maintainers; [ kalbasit ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/pkgs/applications/terminal-emulators/cool-retro-term/default.nix b/pkgs/applications/terminal-emulators/cool-retro-term/default.nix new file mode 100644 index 000000000000..739ad07adbf3 --- /dev/null +++ b/pkgs/applications/terminal-emulators/cool-retro-term/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, mkDerivation, qtbase, qtquick1, qmltermwidget +, qtquickcontrols, qtgraphicaleffects, qmake }: + +mkDerivation rec { + version = "1.1.1"; + pname = "cool-retro-term"; + + src = fetchFromGitHub { + owner = "Swordfish90"; + repo = "cool-retro-term"; + rev = version; + sha256 = "0mird4k88ml6y61hky2jynrjmnxl849fvhsr5jfdlnv0i7r5vwi5"; + }; + + patchPhase = '' + sed -i -e '/qmltermwidget/d' cool-retro-term.pro + ''; + + buildInputs = [ qtbase qtquick1 qmltermwidget qtquickcontrols qtgraphicaleffects ]; + nativeBuildInputs = [ qmake ]; + + installFlags = [ "INSTALL_ROOT=$(out)" ]; + + preFixup = '' + mv $out/usr/share $out/share + mv $out/usr/bin $out/bin + rmdir $out/usr + '' + stdenv.lib.optionalString stdenv.isDarwin '' + ln -s $out/bin/cool-retro-term.app/Contents/MacOS/cool-retro-term $out/bin/cool-retro-term + ''; + + enableParallelBuilding = true; + + meta = { + description = "Terminal emulator which mimics the old cathode display"; + longDescription = '' + cool-retro-term is a terminal emulator which tries to mimic the look and + feel of the old cathode tube screens. It has been designed to be + eye-candy, customizable, and reasonably lightweight. + ''; + homepage = "https://github.com/Swordfish90/cool-retro-term"; + license = stdenv.lib.licenses.gpl3Plus; + platforms = with stdenv.lib.platforms; linux ++ darwin; + maintainers = with stdenv.lib.maintainers; [ skeidel ]; + }; +} diff --git a/pkgs/applications/terminal-emulators/eterm/default.nix b/pkgs/applications/terminal-emulators/eterm/default.nix new file mode 100644 index 000000000000..b51acd9fa728 --- /dev/null +++ b/pkgs/applications/terminal-emulators/eterm/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl +, libX11, libXext, libXaw +, pkgconfig, imlib2, libast }: + +stdenv.mkDerivation rec { + pname = "eterm"; + version = "0.9.6"; + srcName = "Eterm-${version}"; + + src = fetchurl { + url = "http://www.eterm.org/download/${srcName}.tar.gz"; + sha256 = "0g71szjklkiczxwzbjjfm59y6v9w4hp8mg7cy99z1g7qcjm0gfbj"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libX11 libXext libXaw imlib2 ]; + propagatedBuildInputs = [ libast ]; + + meta = with stdenv.lib; { + description = "Terminal emulator"; + homepage = "http://www.eterm.org"; + license = licenses.bsd2; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/terminal-emulators/evilvte/default.nix b/pkgs/applications/terminal-emulators/evilvte/default.nix new file mode 100644 index 000000000000..7a5284a527a6 --- /dev/null +++ b/pkgs/applications/terminal-emulators/evilvte/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchgit, makeWrapper, pkgconfig, + gnome2, glib, pango, cairo, gdk-pixbuf, atk, freetype, xorg, + configH ? "" +}: + +stdenv.mkDerivation { + pname = "evilvte"; + version = "0.5.2-20140827"; + + src = fetchgit { + url = "https://github.com/caleb-/evilvte.git"; + rev = "8dfa41e26bc640dd8d8c7317ff7d04e3c01ded8a"; + sha256 = "70f1d4234d077121e2223a735d749d1b53f0b84393507b635b8a37c3716e94d3"; + }; + + buildInputs = [ + gnome2.vte glib pango gnome2.gtk cairo gdk-pixbuf atk freetype xorg.libX11 + xorg.xorgproto xorg.libXext makeWrapper pkgconfig + ]; + + buildPhase = '' + cat >src/config.h <<EOF + ${configH} + EOF + make + ''; + + meta = with stdenv.lib; { + description = "VTE based, highly customizable terminal emulator"; + homepage = "http://www.calno.com/evilvte"; + license = licenses.gpl2; + maintainers = [ maintainers.bodil ]; + platforms = platforms.linux; + knownVulnerabilities = [ + "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854585" + ]; + }; +} diff --git a/pkgs/applications/terminal-emulators/foot/default.nix b/pkgs/applications/terminal-emulators/foot/default.nix new file mode 100644 index 000000000000..3d95f7c5772d --- /dev/null +++ b/pkgs/applications/terminal-emulators/foot/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchgit +, fcft, freetype, pixman, libxkbcommon, fontconfig, wayland +, meson, ninja, ncurses, scdoc, tllist, wayland-protocols, pkg-config +}: + +stdenv.mkDerivation rec { + pname = "foot"; + version = "1.5.1"; + + src = fetchgit { + url = "https://codeberg.org/dnkl/foot.git"; + rev = version; + sha256 = "sha256-GAk2qkrgCNILJOeRcn1NT4t3w+R6WFTZ1goOhBEwKwc="; + }; + + nativeBuildInputs = [ + meson ninja ncurses scdoc tllist wayland-protocols pkg-config + ]; + buildInputs = [ + fontconfig freetype pixman wayland libxkbcommon fcft + ]; + + # recommended build flags for foot as per INSTALL.md + # https://codeberg.org/dnkl/foot/src/branch/master/INSTALL.md#user-content-release-build + preConfigure = '' + export CFLAGS+="-O3 -fno-plt" + ''; + + mesonFlags = [ "--buildtype=release" "-Db_lto=true" ]; + + meta = with stdenv.lib; { + homepage = "https://codeberg.org/dnkl/foot/"; + description = "A fast, lightweight and minimalistic Wayland terminal emulator"; + license = licenses.mit; + maintainers = [ maintainers.sternenseemann ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/terminal-emulators/guake/default.nix b/pkgs/applications/terminal-emulators/guake/default.nix new file mode 100644 index 000000000000..d403ddc8b26c --- /dev/null +++ b/pkgs/applications/terminal-emulators/guake/default.nix @@ -0,0 +1,74 @@ +{ stdenv +, fetchFromGitHub +, python3 +, gettext +, gobject-introspection +, wrapGAppsHook +, gtk3 +, keybinder3 +, libnotify +, libutempter +, vte +, libwnck3 +}: + +python3.pkgs.buildPythonApplication rec { + pname = "guake"; + version = "3.6.3"; + + format = "other"; + + src = fetchFromGitHub { + owner = "Guake"; + repo = "guake"; + rev = version; + sha256 = "13ipnmqcyixpa6qv83m0f91za4kar14s5jpib68b32z65x1h0j3b"; + }; + + # Strict deps breaks guake + # See https://github.com/NixOS/nixpkgs/issues/59930 + # and https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + nativeBuildInputs = [ + gettext + gobject-introspection + wrapGAppsHook + python3.pkgs.pip + ]; + + buildInputs = [ + gtk3 + keybinder3 + libnotify + libwnck3 + python3 + vte + ]; + + propagatedBuildInputs = with python3.pkgs; [ + dbus-python + pbr + pycairo + pygobject3 + setuptools + ]; + + PBR_VERSION = version; # pbr needs either .git directory, sdist, or env var + + makeFlags = [ + "prefix=${placeholder ''out''}" + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libutempter ]}") + ''; + + meta = with stdenv.lib; { + description = "Drop-down terminal for GNOME"; + homepage = "http://guake-project.org"; + license = licenses.gpl2; + maintainers = [ maintainers.msteen ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/terminal-emulators/havoc/default.nix b/pkgs/applications/terminal-emulators/havoc/default.nix new file mode 100644 index 000000000000..a6d5278fc3c5 --- /dev/null +++ b/pkgs/applications/terminal-emulators/havoc/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, libxkbcommon, wayland, wayland-protocols }: + +stdenv.mkDerivation rec { + + pname = "havoc"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "ii8"; + repo = pname; + rev = version; + sha256 = "1g05r9j6srwz1krqvzckx80jn8fm48rkb4xp68953gy9yp2skg3k"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxkbcommon wayland wayland-protocols ]; + + dontConfigure = true; + + installFlags = [ "PREFIX=$$out" ]; + + postInstall = '' + install -D -m 644 havoc.cfg -t $out/etc/${pname}/ + install -D -m 644 README.md -t $out/share/doc/${pname}-${version}/ + ''; + + meta = with stdenv.lib; { + description = "A minimal terminal emulator for Wayland"; + homepage = "https://github.com/ii8/havoc"; + license = with licenses; [ mit publicDomain ]; + platforms = with p |