From f0b9bfc0a7089fe9243556203afd7dbd6e8a51b7 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Sun, 16 Jun 2024 18:02:10 -0600 Subject: [PATCH] add wezterm potential kitty replacement --- modules/common/applications/default.nix | 1 + modules/common/applications/wezterm.nix | 128 ++++++++++++++++++ modules/darwin/hammerspoon.nix | 2 +- .../Spoons/Launcher.spoon/init.lua | 2 +- modules/darwin/system.nix | 2 +- modules/darwin/user.nix | 2 +- 6 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 modules/common/applications/wezterm.nix diff --git a/modules/common/applications/default.nix b/modules/common/applications/default.nix index b48a61f..8f94e4d 100644 --- a/modules/common/applications/default.nix +++ b/modules/common/applications/default.nix @@ -11,6 +11,7 @@ ./obsidian.nix ./qbittorrent.nix ./slack.nix + ./wezterm.nix ./yt-dlp.nix ]; } diff --git a/modules/common/applications/wezterm.nix b/modules/common/applications/wezterm.nix new file mode 100644 index 0000000..031f3d3 --- /dev/null +++ b/modules/common/applications/wezterm.nix @@ -0,0 +1,128 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + + options = { + wezterm = { + enable = lib.mkEnableOption { + description = "Enable WezTerm terminal."; + default = false; + }; + }; + }; + + config = lib.mkIf (config.gui.enable && config.wezterm.enable) { + + # Set the Rofi-Systemd terminal for viewing logs + # Using optionalAttrs because only available in NixOS + environment = + { } + // lib.attrsets.optionalAttrs (builtins.hasAttr "sessionVariables" config.environment) { + sessionVariables.ROFI_SYSTEMD_TERM = "${pkgs.wezterm}/bin/wezterm"; + }; + + home-manager.users.${config.user} = { + + # Set the i3 terminal + xsession.windowManager.i3.config.terminal = lib.mkIf pkgs.stdenv.isLinux "wezterm"; + + # Set the Rofi terminal for running programs + programs.rofi.terminal = lib.mkIf pkgs.stdenv.isLinux "${pkgs.wezterm}/bin/wezterm"; + + # Display images in the terminal + programs.fish.shellAliases = { + icat = lib.mkForce "wezterm imgcat"; + }; + + programs.wezterm = { + enable = true; + colorSchemes = { + myTheme = { + background = config.theme.colors.base00; + foreground = config.theme.colors.base05; + cursor_bg = config.theme.colors.base05; + cursor_fg = config.theme.colors.base00; + cursor_border = config.theme.colors.base05; + selection_bg = config.theme.colors.base05; + selection_fg = config.theme.colors.base00; + scrollbar_thumb = config.theme.colors.base03; + ansi = [ + config.theme.colors.base01 # black + config.theme.colors.base0F # maroon + config.theme.colors.base0B # green + config.theme.colors.base0A # olive + config.theme.colors.base0D # navy + config.theme.colors.base0E # purple + config.theme.colors.base0C # teal + config.theme.colors.base06 # silver + ]; + brights = [ + config.theme.colors.base04 # grey + config.theme.colors.base08 # red + config.theme.colors.base0B # lime + config.theme.colors.base0A # yellow + config.theme.colors.base0D # blue + config.theme.colors.base0E # fuchsia + config.theme.colors.base0C # aqua + config.theme.colors.base07 # white + ]; + compose_cursor = config.theme.colors.base09; # orange + copy_mode_active_highlight_bg = { + Color = config.theme.colors.base03; + }; + copy_mode_active_highlight_fg = { + Color = config.theme.colors.base07; + }; + copy_mode_inactive_highlight_bg = { + Color = config.theme.colors.base02; + }; + copy_mode_inactive_highlight_fg = { + Color = config.theme.colors.base06; + }; + quick_select_label_bg = { + Color = config.theme.colors.base02; + }; + quick_select_label_fg = { + Color = config.theme.colors.base06; + }; + quick_select_match_bg = { + Color = config.theme.colors.base03; + }; + quick_select_match_fg = { + Color = config.theme.colors.base07; + }; + }; + }; + extraConfig = '' + return { + color_scheme = "myTheme", + + -- Scrollback + scrollback_lines = 10000, + + -- Window + window_padding = { + left = 6, + right = 6, + top = 0, + bottom = 0, + }, + + -- Disable audio + audible_bell = "Disabled", + + initial_rows = 80, + initial_cols = 200, + + font = wezterm.font 'VictorMono Nerd Font', + font_size = 18.0, + } + ''; + }; + }; + }; +} diff --git a/modules/darwin/hammerspoon.nix b/modules/darwin/hammerspoon.nix index b2db2fe..e5b6223 100644 --- a/modules/darwin/hammerspoon.nix +++ b/modules/darwin/hammerspoon.nix @@ -18,7 +18,7 @@ src = ./hammerspoon/Spoons/Launcher.spoon/init.lua; firefox = "${pkgs.firefox-bin}/Applications/Firefox.app"; discord = "${pkgs.discord}/Applications/Discord.app"; - kitty = "${pkgs.kitty}/Applications/kitty.app"; + wezterm = "${pkgs.wezterm}/Applications/WezTerm.app"; obsidian = "${pkgs.obsidian}/Applications/Obsidian.app"; slack = "${pkgs.slack}/Applications/Slack.app"; }; diff --git a/modules/darwin/hammerspoon/Spoons/Launcher.spoon/init.lua b/modules/darwin/hammerspoon/Spoons/Launcher.spoon/init.lua index 0dee26a..c2f44c2 100644 --- a/modules/darwin/hammerspoon/Spoons/Launcher.spoon/init.lua +++ b/modules/darwin/hammerspoon/Spoons/Launcher.spoon/init.lua @@ -56,7 +56,7 @@ function obj:init() -- Launcher shortcuts self.launcher:bind("ctrl", "space", function() end) self.launcher:bind("", "return", function() - self:switch("@kitty@") + self:switch("@wezterm@") end) self.launcher:bind("", "C", function() self:switch("Calendar.app") diff --git a/modules/darwin/system.nix b/modules/darwin/system.nix index 7640370..501b0bd 100644 --- a/modules/darwin/system.nix +++ b/modules/darwin/system.nix @@ -105,7 +105,7 @@ "/Applications/zoom.us.app" "${pkgs.discord}/Applications/Discord.app" "${pkgs.obsidian}/Applications/Obsidian.app" - "${pkgs.kitty}/Applications/kitty.app" + "${pkgs.wezterm}/Applications/WezTerm.app" "/System/Applications/System Settings.app" ]; }; diff --git a/modules/darwin/user.nix b/modules/darwin/user.nix index c457f93..20e5078 100644 --- a/modules/darwin/user.nix +++ b/modules/darwin/user.nix @@ -11,7 +11,7 @@ users.users."${config.user}" = { # macOS user home = config.homePath; - shell = pkgs.fish; # Default shell + # shell = pkgs.fish; # Default shell }; home-manager.users.${config.user} = {