feat(home/wezterm): move to wezterm as main terminal

This commit is contained in:
Kat Inskip 2022-07-29 10:05:38 -07:00
parent a130807b83
commit 0b8b1e6f33
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
5 changed files with 145 additions and 5 deletions

View file

@ -23,11 +23,11 @@ in
gui = {
imports = with dirImports; [
gui
wezterm
firefox
konawall
ranger
xkb
kitty
gpg
sway
mako

View file

@ -12,7 +12,6 @@
bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
background_opacity = "0.9";
disable_ligatures = "cursor";
};
};

View file

@ -73,7 +73,7 @@ let lockCommand = config.programs.swaylock.script; in
config =
let
pactl = "${config.home.nixosConfig.hardware.pulseaudio.package or pkgs.pulseaudio}/bin/pactl";
dmenu = "${pkgs.wofi}/bin/wofi -idbt ${pkgs.kitty}/bin/kitty -s ~/.config/wofi/wofi.css -p '' -W 25%";
dmenu = "${pkgs.wofi}/bin/wofi -idbt ${pkgs.wezterm}/bin/wezterm -s ~/.config/wofi/wofi.css -p '' -W 25%";
in
{
@ -104,8 +104,8 @@ let lockCommand = config.programs.swaylock.script; in
style = "Regular";
size = config.kw.theme.font.size;
};
terminal = "${pkgs.kitty}/bin/kitty";
menu = "${pkgs.j4-dmenu-desktop}/bin/j4-dmenu-desktop --no-generic --dmenu=\"${dmenu}\" --term='${pkgs.kitty}/bin/kitty'";
terminal = "${pkgs.wezterm}/bin/wezterm";
menu = "${pkgs.j4-dmenu-desktop}/bin/j4-dmenu-desktop --no-generic --dmenu=\"${dmenu}\" --term='${pkgs.wezterm}/bin/wezterm'";
modifier = "Mod4";
assigns = { "12:F2" = [{ class = "screenstub"; }]; };

16
home/wezterm.nix Normal file
View file

@ -0,0 +1,16 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; [
wezterm
];
xdg.configFile."wezterm/wezterm.lua".text = ''
local wezterm = require 'wezterm'
return {
enable_tab_bar = false,
font = wezterm.font "${config.kw.theme.font.termName}",
font_size = ${toString config.kw.theme.font.size},
}
'';
}

View file

@ -0,0 +1,125 @@
{ stdenv
, rustPlatform
, lib
, fetchFromGitHub
, ncurses
, perl
, pkg-config
, python3
, fontconfig
, openssl
, libGL
, libX11
, libxcb
, libxkbcommon
, xcbutil
, xcbutilimage
, xcbutilkeysyms
, xcbutilwm
, wayland
, zlib
, CoreGraphics
, Cocoa
, Foundation
, libiconv
, nixosTests
, runCommand
}:
rustPlatform.buildRustPackage rec {
pname = "wezterm";
version = "20220624-141144-bd1b7c5d";
src = fetchFromGitHub {
owner = "wez";
repo = pname;
rev = "cb89f2c36e08e74512ee7b8e1aff3bf461f774c2";
fetchSubmodules = true;
sha256 = "sha256-Pmd5I2p2BDhJ3Mm7uGZjWYladZN2x8MMtquP4+TVtJ0=";
};
postPatch = ''
echo ${version} > .tag
# tests are failing with: Unable to exchange encryption keys
rm -r wezterm-ssh/tests
'';
cargoSha256 = "sha256-0jhJzz3lrQf+7vv373J1HfzzVw+eottdto/ephnz4HM=";
nativeBuildInputs = [
pkg-config
python3
ncurses # tic for terminfo
] ++ lib.optional stdenv.isDarwin perl;
buildInputs = [
fontconfig
zlib
] ++ lib.optionals stdenv.isLinux [
libX11
libxcb
libxkbcommon
openssl
wayland
xcbutil
xcbutilimage
xcbutilkeysyms
xcbutilwm # contains xcb-ewmh among others
] ++ lib.optionals stdenv.isDarwin [
Cocoa
CoreGraphics
Foundation
libiconv
];
postInstall = ''
mkdir -p $out/nix-support
echo "${passthru.terminfo}" >> $out/nix-support/propagated-user-env-packages
# desktop icon
install -Dm644 assets/icon/terminal.png $out/share/icons/hicolor/128x128/apps/org.wezfurlong.wezterm.png
install -Dm644 assets/wezterm.desktop $out/share/applications/org.wezfurlong.wezterm.desktop
install -Dm644 assets/wezterm.appdata.xml $out/share/metainfo/org.wezfurlong.wezterm.appdata.xml
# helper scripts
install -Dm644 assets/shell-integration/wezterm.sh -t $out/etc/profile.d
'';
preFixup = lib.optionalString stdenv.isLinux ''
patchelf --add-needed "${libGL}/lib/libEGL.so.1" $out/bin/wezterm-gui
'' + lib.optionalString stdenv.isDarwin ''
mkdir -p "$out/Applications"
OUT_APP="$out/Applications/WezTerm.app"
cp -r assets/macos/WezTerm.app "$OUT_APP"
rm $OUT_APP/*.dylib
cp -r assets/shell-integration/* "$OUT_APP"
ln -s $out/bin/{wezterm,wezterm-mux-server,wezterm-gui,strip-ansi-escapes} "$OUT_APP"
'';
passthru = {
tests = {
all-terminfo = nixosTests.allTerminfo;
terminal-emulators = nixosTests.terminal-emulators.wezterm;
};
terminfo = runCommand "wezterm-terminfo"
{
nativeBuildInputs = [
ncurses
];
} ''
mkdir -p $out/share/terminfo $out/nix-support
tic -x -o $out/share/terminfo ${src}/termwiz/data/wezterm.terminfo
'';
};
meta = with lib; {
description = "A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust";
homepage = "https://wezfurlong.org/wezterm";
license = licenses.mit;
maintainers = with maintainers; [ SuperSandro2000 ];
platforms = platforms.unix;
# Fails on missing UserNotifications framework while linking
broken = stdenv.isDarwin;
};
}