diff --git a/wm/terminal/default.nix b/wm/terminal/default.nix index 853e88f..5fb98ad 100644 --- a/wm/terminal/default.nix +++ b/wm/terminal/default.nix @@ -13,7 +13,7 @@ let cCfg = cfg.colors; in { - imports = [ ./foot.nix ]; + imports = [ ./foot.nix ./kitty.nix ]; options = { terminal = { @@ -23,7 +23,7 @@ in description = "Manage terminal"; }; kind = mkOption { - type = types.enum [ "foot" ]; + type = types.enum [ "foot" "kitty" ]; default = "foot"; description = "The terminal to be used"; }; diff --git a/wm/terminal/kitty.nix b/wm/terminal/kitty.nix new file mode 100644 index 0000000..895a9c8 --- /dev/null +++ b/wm/terminal/kitty.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +with lib; +with builtins; + +let + cfg = config.terminal; + cCfg = cfg.colors; +in + +{ + config = mkIf (cfg.enable && cfg.kind == "kitty") { + programs.kitty = { + enable = true; + font = { + name = cfg.font.family; + size = cfg.font.size; + }; + settings = + let + colorCfg = value: mkIf (value != null) "#${value}"; + colorCfgNormal = color: colorCfg color.normal; + colorCfgBright = color: if color.bright != null then "#${color.bright}" else colorCfgNormal color; + in + { + background = colorCfg cCfg.background; + foreground = colorCfg cCfg.foreground; + + color0 = colorCfgNormal cCfg.black; + color8 = colorCfgBright cCfg.black; + + color1 = colorCfgNormal cCfg.red; + color9 = colorCfgBright cCfg.red; + + color2 = colorCfgNormal cCfg.green; + color10 = colorCfgBright cCfg.green; + + color3 = colorCfgNormal cCfg.yellow; + color11 = colorCfgBright cCfg.yellow; + + color4 = colorCfgNormal cCfg.blue; + color12 = colorCfgBright cCfg.blue; + + color5 = colorCfgNormal cCfg.magenta; + color13 = colorCfgBright cCfg.magenta; + + color6 = colorCfgNormal cCfg.cyan; + color14 = colorCfgBright cCfg.cyan; + + color7 = colorCfgNormal cCfg.white; + color15 = colorCfgBright cCfg.white; + + selection_foreground = colorCfg cCfg.selectionForeground; + }; + }; + wayland.windowManager.sway.config.terminal = "${pkgs.kitty}/bin/kitty"; + xsession.windowManager.i3.config.terminal = "${pkgs.kitty}/bin/kitty"; + }; +}