diff --git a/modules/programs/wezterm.nix b/modules/programs/wezterm.nix
index eedd9379..94e2f898 100644
--- a/modules/programs/wezterm.nix
+++ b/modules/programs/wezterm.nix
@@ -5,6 +5,7 @@ with lib;
let
cfg = config.programs.wezterm;
+ tomlFormat = pkgs.formats.toml { };
in {
options.programs.wezterm = {
@@ -44,13 +45,45 @@ in {
how to configure.
'';
};
+
+ colorSchemes = mkOption {
+ type = types.attrsOf (tomlFormat.type);
+ default = { };
+ example = literalExpression ''
+ myCoolTheme = {
+ ansi = [
+ "#222222" "#D14949" "#48874F" "#AFA75A"
+ "#599797" "#8F6089" "#5C9FA8" "#8C8C8C"
+ ];
+ brights = [
+ "#444444" "#FF6D6D" "#89FF95" "#FFF484"
+ "#97DDFF" "#FDAAF2" "#85F5DA" "#E9E9E9"
+ ];
+ background = "#1B1B1B";
+ cursor_bg = "#BEAF8A";
+ cursor_border = "#BEAF8A";
+ cursor_fg = "#1B1B1B";
+ foreground = "#BEAF8A";
+ selection_bg = "#444444";
+ selection_fg = "#E9E9E9";
+ };
+ '';
+ description = ''
+ Attribute set of additional color schemes to be written to
+ $XDG_CONFIG_HOME/wezterm/colors, where each key is
+ taken as the name of the corresponding color scheme. See
+
+ for more details of the TOML color scheme format.
+ '';
+ };
+
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
- xdg.configFile."wezterm/wezterm.lua" = {
- text = ''
+ xdg.configFile = {
+ "wezterm/wezterm.lua".text = ''
-- Generated by Home Manager.
-- See https://wezfurlong.org/wezterm/
@@ -60,6 +93,9 @@ in {
${cfg.extraConfig}
'';
- };
+ } // mapAttrs' (name: value:
+ nameValuePair "wezterm/colors/${name}.toml" {
+ source = tomlFormat.generate "${name}.toml" { colors = value; };
+ }) cfg.colorSchemes;
};
}
diff --git a/tests/modules/programs/wezterm/example-setting.nix b/tests/modules/programs/wezterm/example-setting.nix
index fc2b08e1..ec586daa 100644
--- a/tests/modules/programs/wezterm/example-setting.nix
+++ b/tests/modules/programs/wezterm/example-setting.nix
@@ -15,12 +15,41 @@
}
}
'';
+ colorSchemes.test = {
+ ansi = [
+ "#222222"
+ "#D14949"
+ "#48874F"
+ "#AFA75A"
+ "#599797"
+ "#8F6089"
+ "#5C9FA8"
+ "#8C8C8C"
+ ];
+ brights = [
+ "#444444"
+ "#FF6D6D"
+ "#89FF95"
+ "#FFF484"
+ "#97DDFF"
+ "#FDAAF2"
+ "#85F5DA"
+ "#E9E9E9"
+ ];
+ background = "#1B1B1B";
+ cursor_bg = "#BEAF8A";
+ cursor_border = "#BEAF8A";
+ cursor_fg = "#1B1B1B";
+ foreground = "#BEAF8A";
+ selection_bg = "#444444";
+ selection_fg = "#E9E9E9";
+ };
};
test.stubs.wezterm = { };
nmt.script = let
- expected = builtins.toFile "wezterm.lua" ''
+ expectedConfig = builtins.toFile "wezterm.lua" ''
-- Generated by Home Manager.
-- See https://wezfurlong.org/wezterm/
@@ -40,8 +69,22 @@
}
'';
+ expectedColorScheme = builtins.toFile "test.toml" ''
+ [colors]
+ ansi = ["#222222", "#D14949", "#48874F", "#AFA75A", "#599797", "#8F6089", "#5C9FA8", "#8C8C8C"]
+ background = "#1B1B1B"
+ brights = ["#444444", "#FF6D6D", "#89FF95", "#FFF484", "#97DDFF", "#FDAAF2", "#85F5DA", "#E9E9E9"]
+ cursor_bg = "#BEAF8A"
+ cursor_border = "#BEAF8A"
+ cursor_fg = "#1B1B1B"
+ foreground = "#BEAF8A"
+ selection_bg = "#444444"
+ selection_fg = "#E9E9E9"
+ '';
in ''
assertFileExists home-files/.config/wezterm/wezterm.lua
- assertFileContent home-files/.config/wezterm/wezterm.lua ${expected}
+ assertFileContent home-files/.config/wezterm/wezterm.lua ${expectedConfig}
+ assertFileExists home-files/.config/wezterm/colors/test.toml
+ assertFileContent home-files/.config/wezterm/colors/test.toml ${expectedColorScheme}
'';
}