wezterm: move to its own module
This commit is contained in:
parent
12a7b0eeac
commit
e7ab95b05a
3 changed files with 85 additions and 71 deletions
|
@ -1,71 +0,0 @@
|
||||||
{ inputs, pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.wezterm.packages.${pkgs.system}.default;
|
|
||||||
extraConfig = ''
|
|
||||||
local w = require('wezterm')
|
|
||||||
|
|
||||||
local function is_vim(pane)
|
|
||||||
return pane:get_user_vars().IS_NVIM == 'true'
|
|
||||||
end
|
|
||||||
|
|
||||||
local direction_keys = {
|
|
||||||
h = 'Left',
|
|
||||||
j = 'Down',
|
|
||||||
k = 'Up',
|
|
||||||
l = 'Right',
|
|
||||||
}
|
|
||||||
|
|
||||||
local function split_nav(resize_or_move, key)
|
|
||||||
return {
|
|
||||||
key = key,
|
|
||||||
mods = resize_or_move == 'resize' and 'META' or 'CTRL',
|
|
||||||
action = w.action_callback(function(win, pane)
|
|
||||||
if is_vim(pane) then
|
|
||||||
win:perform_action({
|
|
||||||
SendKey = { key = key, mods = resize_or_move == 'resize' and 'META' or 'CTRL' },
|
|
||||||
}, pane)
|
|
||||||
else
|
|
||||||
if resize_or_move == 'resize' then
|
|
||||||
win:perform_action({ AdjustPaneSize = { direction_keys[key], 3 } }, pane)
|
|
||||||
else
|
|
||||||
win:perform_action({ ActivatePaneDirection = direction_keys[key] }, pane)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end),
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
enable_wayland = true,
|
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
|
||||||
show_new_tab_button_in_tab_bar = false,
|
|
||||||
harfbuzz_features = { "ss01", "ss03" },
|
|
||||||
|
|
||||||
leader = { key = " ", mods = "CTRL", timeout_milliseconds = 1000 },
|
|
||||||
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
mods = "LEADER",
|
|
||||||
key = "-",
|
|
||||||
action = wezterm.action.SplitVertical { domain = "CurrentPaneDomain" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mods = "LEADER",
|
|
||||||
key = "=",
|
|
||||||
action = wezterm.action.SplitHorizontal { domain = "CurrentPaneDomain" }
|
|
||||||
},
|
|
||||||
split_nav('move', 'h'),
|
|
||||||
split_nav('move', 'j'),
|
|
||||||
split_nav('move', 'k'),
|
|
||||||
split_nav('move', 'l'),
|
|
||||||
split_nav('resize', 'h'),
|
|
||||||
split_nav('resize', 'j'),
|
|
||||||
split_nav('resize', 'k'),
|
|
||||||
split_nav('resize', 'l'),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -6,6 +6,7 @@ _:
|
||||||
./nvidia.nix
|
./nvidia.nix
|
||||||
./gnome.nix
|
./gnome.nix
|
||||||
./gaming.nix
|
./gaming.nix
|
||||||
|
./wezterm.nix
|
||||||
./stylix.nix
|
./stylix.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
84
modules/wezterm.nix
Normal file
84
modules/wezterm.nix
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
{ config, lib, inputs, username, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.modules.wezterm;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
modules.wezterm = {
|
||||||
|
enable = lib.mkEnableOption "enable wezterm";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
# package = inputs.wezterm.packages.${pkgs.system}.default;
|
||||||
|
extraConfig = ''
|
||||||
|
local w = require('wezterm')
|
||||||
|
|
||||||
|
local function is_vim(pane)
|
||||||
|
return pane:get_user_vars().IS_NVIM == 'true'
|
||||||
|
end
|
||||||
|
|
||||||
|
local direction_keys = {
|
||||||
|
h = 'Left',
|
||||||
|
j = 'Down',
|
||||||
|
k = 'Up',
|
||||||
|
l = 'Right',
|
||||||
|
}
|
||||||
|
|
||||||
|
local function split_nav(resize_or_move, key)
|
||||||
|
return {
|
||||||
|
key = key,
|
||||||
|
mods = resize_or_move == 'resize' and 'META' or 'CTRL',
|
||||||
|
action = w.action_callback(function(win, pane)
|
||||||
|
if is_vim(pane) then
|
||||||
|
win:perform_action({
|
||||||
|
SendKey = { key = key, mods = resize_or_move == 'resize' and 'META' or 'CTRL' },
|
||||||
|
}, pane)
|
||||||
|
else
|
||||||
|
if resize_or_move == 'resize' then
|
||||||
|
win:perform_action({ AdjustPaneSize = { direction_keys[key], 3 } }, pane)
|
||||||
|
else
|
||||||
|
win:perform_action({ ActivatePaneDirection = direction_keys[key] }, pane)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
enable_wayland = false,
|
||||||
|
front_end = "WebGpu",
|
||||||
|
hide_tab_bar_if_only_one_tab = true,
|
||||||
|
show_new_tab_button_in_tab_bar = false,
|
||||||
|
harfbuzz_features = { "ss01", "ss03" },
|
||||||
|
|
||||||
|
leader = { key = " ", mods = "CTRL", timeout_milliseconds = 1000 },
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
mods = "LEADER",
|
||||||
|
key = "-",
|
||||||
|
action = wezterm.action.SplitVertical { domain = "CurrentPaneDomain" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mods = "LEADER",
|
||||||
|
key = "=",
|
||||||
|
action = wezterm.action.SplitHorizontal { domain = "CurrentPaneDomain" }
|
||||||
|
},
|
||||||
|
split_nav('move', 'h'),
|
||||||
|
split_nav('move', 'j'),
|
||||||
|
split_nav('move', 'k'),
|
||||||
|
split_nav('move', 'l'),
|
||||||
|
split_nav('resize', 'h'),
|
||||||
|
split_nav('resize', 'j'),
|
||||||
|
split_nav('resize', 'k'),
|
||||||
|
split_nav('resize', 'l'),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue