feat[client]: manage zellij using nix

This commit is contained in:
Leon Schwarzäugl 2025-11-17 22:43:34 +01:00
parent ad4443056a
commit 6d930c3fa4
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
5 changed files with 2604 additions and 10 deletions

View file

@ -4,11 +4,25 @@
config = lib.mkIf config.swarselmodules.kitty {
programs.kitty = {
enable = true;
keybindings = { };
keybindings =
let
bindWithModifier = lib.mapAttrs' (key: lib.nameValuePair ("ctrl+shift" + key));
in
bindWithModifier {
"page_up" = "scroll_page_up";
"up" = "scroll_page_up";
"page_down" = "scroll_page_down";
"down" = "scroll_page_down";
"w" = "no_op";
};
settings = {
scrollback_lines = 10000;
cursor_blink_interval = 0;
disable_ligatures = "cursor";
enable_audio_bell = false;
notify_on_cmd_finish = "always 20";
open_url_with = "xdg-open";
scrollback_lines = 100000;
scrollback_pager_history_size = 512;
};
};
};

File diff suppressed because it is too large Load diff

View file

@ -5,6 +5,55 @@
programs.zellij = {
enable = true;
enableZshIntegration = true;
settings = {
pane_frames = false;
simplified_ui = false;
default_shell = "zsh";
copy_on_select = true;
on_force_close = "detach";
show_startup_tips = false;
support_kitty_keyboard_protocol = true;
default_layout = "swarsel";
layout_dir = "${config.home.homeDirectory}/.config/zellij/layouts";
theme_dir = "${config.home.homeDirectory}/.config/zellij/themes";
scrollback_lines_to_serialize = config.programs.kitty.settings.scrollback_lines;
session_serialization = true;
copy_command =
if pkgs.stdenv.hostPlatform.isLinux then
"wl-copy"
else if pkgs.stdenv.hostPlatform.isDarwin then
"pbcopy"
else
"";
ui.pane_frames = {
rounded_corners = true;
hide_session_name = true;
};
plugins = {
tab-bar.path = "tab-bar";
status-bar.path = "status-bar";
strider.path = "strider";
compact-bar.path = "compact-bar";
};
# configuration = {
# _props.location = "zellij:configuration";
# };
# filepicker = {
# _props.location = "zellij:strider";
# cwd = "/";
# };
# plugin-manager = {
# _props.location = "zellij:plugin-manager";
# };
# session-manager = {
# _props.location = "zellij:session-manager";
# };
# welcome-screen = {
# _props.location = "zellij:session-manager";
# welcome_screen = true;
# };
};
};
home.packages = with pkgs; [
@ -12,8 +61,8 @@
];
xdg.configFile = {
"zellij/config.kdl".text = import "${self}/files/zellij/config.kdl.nix" { inherit config; };
"zellij/layouts/default.kdl".text = import "${self}/files/zellij/layouts/default.kdl.nix" { inherit config pkgs; };
# "zellij/config.kdl".text = import "${self}/files/zellij/config.kdl.nix" { inherit config; };
"zellij/layouts/swarsel.kdl".text = import "${self}/files/zellij/layouts/swarsel.kdl.nix" { inherit config pkgs; };
};
};