From d9be6f92138d35f8978cc0c6d45eaa016d032023 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Thu, 30 Nov 2023 11:01:53 +0800 Subject: [PATCH] fix: wezterm on darwin --- home/base/desktop/terminal/wezterm.nix | 143 +++++++++++++------------ 1 file changed, 77 insertions(+), 66 deletions(-) diff --git a/home/base/desktop/terminal/wezterm.nix b/home/base/desktop/terminal/wezterm.nix index 88ad67fb..b378a5be 100644 --- a/home/base/desktop/terminal/wezterm.nix +++ b/home/base/desktop/terminal/wezterm.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: +{pkgs, ...}: ########################################################### # # Wezterm Configuration @@ -13,72 +10,86 @@ # wezterm has catppuccin theme built-in, # it's not necessary to install it separately. - programs.wezterm = { - enable = true; - package = if pkgs.stdenv.isDarwin - then - pkgs.hello # install wezterm via homebrew on macOS to avoid compilation, dummy package here. - else - pkgs.wezterm; + programs.wezterm = + { + enable = true; - extraConfig = - let - fontsize = if pkgs.stdenv.isDarwin then "14.0" else "13.0"; + extraConfig = let + fontsize = + if pkgs.stdenv.isDarwin + then "14.0" + else "13.0"; in - '' - -- Pull in the wezterm API - local wezterm = require 'wezterm' - - -- This table will hold the configuration. - local config = {} - - -- In newer versions of wezterm, use the config_builder which will - -- help provide clearer error messages - if wezterm.config_builder then - config = wezterm.config_builder() - end - - wezterm.on('toggle-opacity', function(window, pane) - local overrides = window:get_config_overrides() or {} - if not overrides.window_background_opacity then - overrides.window_background_opacity = 0.93 - else - overrides.window_background_opacity = nil + '' + -- Pull in the wezterm API + local wezterm = require 'wezterm' + + -- This table will hold the configuration. + local config = {} + + -- In newer versions of wezterm, use the config_builder which will + -- help provide clearer error messages + if wezterm.config_builder then + config = wezterm.config_builder() end - window:set_config_overrides(overrides) - end) - wezterm.on('toggle-maximize', function(window, pane) - window:maximize() - end) + wezterm.on('toggle-opacity', function(window, pane) + local overrides = window:get_config_overrides() or {} + if not overrides.window_background_opacity then + overrides.window_background_opacity = 0.93 + else + overrides.window_background_opacity = nil + end + window:set_config_overrides(overrides) + end) - -- This is where you actually apply your config choices - config.color_scheme = "Catppuccin Mocha" - config.font = wezterm.font("JetBrainsMono Nerd Font") - config.hide_tab_bar_if_only_one_tab = true - config.scrollback_lines = 10000 - config.enable_scroll_bar = true - - config.keys = { - -- toggle opacity(CTRL + SHIFT + B) - { - key = 'B', - mods = 'CTRL', - action = wezterm.action.EmitEvent 'toggle-opacity', - }, - { - key = 'M', - mods = 'CTRL', - action = wezterm.action.EmitEvent 'toggle-maximize', - }, - } + wezterm.on('toggle-maximize', function(window, pane) + window:maximize() + end) - config.font_size = ${fontsize} - '' + (if pkgs.stdenv.isDarwin then '' - -- Spawn a fish shell in login mod - config.default_prog = { '/run/current-system/sw/bin/nu', '-l' } - '' else "") + '' - return config - ''; - }; + -- This is where you actually apply your config choices + config.color_scheme = "Catppuccin Mocha" + config.font = wezterm.font("JetBrainsMono Nerd Font") + config.hide_tab_bar_if_only_one_tab = true + config.scrollback_lines = 10000 + config.enable_scroll_bar = true + + config.keys = { + -- toggle opacity(CTRL + SHIFT + B) + { + key = 'B', + mods = 'CTRL', + action = wezterm.action.EmitEvent 'toggle-opacity', + }, + { + key = 'M', + mods = 'CTRL', + action = wezterm.action.EmitEvent 'toggle-maximize', + }, + } + + config.font_size = ${fontsize} + '' + + ( + if pkgs.stdenv.isDarwin + then '' + -- Spawn a fish shell in login mod + config.default_prog = { '/run/current-system/sw/bin/nu', '-l' } + '' + else "" + ) + + '' + return config + ''; + } + // ( + if pkgs.stdenv.isDarwin + then { + # install wezterm via homebrew on macOS to avoid compilation, dummy package here. + package = pkgs.hello; + enableBashIntegration = false; + enableZshIntegration = false; + } + else {} + ); }