{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.wezterm;
in {
options.programs.wezterm = {
enable = mkEnableOption "wezterm";
package = mkOption {
type = types.package;
default = pkgs.wezterm;
defaultText = literalExpression "pkgs.wezterm";
description = "The Wezterm package to install.";
};
extraConfig = mkOption {
type = types.lines;
default = ''
return {}
'';
example = literalExpression ''
-- Your lua code / config here
local mylib = require 'mylib';
return {
usemylib = mylib.do_fun();
font = wezterm.font("JetBrains Mono"),
font_size = 16.0,
color_scheme = "Tomorrow Night",
hide_tab_bar_if_only_one_tab = true,
default_prog = { "zsh", "--login", "-c", "tmux attach -t dev || tmux new -s dev" },
keys = {
{key="n", mods="SHIFT|CTRL", action="ToggleFullScreen"},
}
}
'';
description = ''
Extra configuration written to
$XDG_CONFIG_HOME/wezterm/wezterm.lua. See
how to configure.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."wezterm/wezterm.lua" = {
text = ''
-- Generated by Home Manager.
-- See https://wezfurlong.org/wezterm/
-- Add config folder to watchlist for config reloads.
local wezterm = require 'wezterm';
wezterm.add_to_config_reload_watch_list(wezterm.config_dir)
${cfg.extraConfig}
'';
};
};
}