66 lines
2.3 KiB
Nix
66 lines
2.3 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.local.programs.terminals.ghostty;
|
|
themeCfg = config.local.themes."${config.local.theme.name}";
|
|
in
|
|
{
|
|
options.local.programs.terminals.ghostty = with lib; {
|
|
enable = mkEnableOption "ghostty";
|
|
package = mkPackageOption pkgs "ghostty" { };
|
|
fontSize = mkOption {
|
|
type = types.number;
|
|
default = 10.0;
|
|
description = "Ghostty font size";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
programs.ghostty = {
|
|
enable = true;
|
|
package = cfg.package;
|
|
settings = {
|
|
theme = "nixos-theme";
|
|
font-family = "monospace";
|
|
font-size = cfg.fontSize;
|
|
window-decoration = false;
|
|
cursor-style-blink = false;
|
|
shell-integration-features = "no-cursor";
|
|
gtk-single-instance = false; # It required to provide working-directory
|
|
};
|
|
enableZshIntegration = config.programs.zsh.enable;
|
|
themes = {
|
|
"nixos-theme" = {
|
|
palette = [
|
|
"0=${themeCfg.window.regular.color0}"
|
|
"1=${themeCfg.window.regular.color1}"
|
|
"2=${themeCfg.window.regular.color2}"
|
|
"3=${themeCfg.window.regular.color3}"
|
|
"4=${themeCfg.window.regular.color4}"
|
|
"5=${themeCfg.window.regular.color5}"
|
|
"6=${themeCfg.window.regular.color6}"
|
|
"7=${themeCfg.window.regular.color7}"
|
|
"8=${themeCfg.window.bold.color8}"
|
|
"9=${themeCfg.window.bold.color9}"
|
|
"10=${themeCfg.window.bold.color10}"
|
|
"11=${themeCfg.window.bold.color11}"
|
|
"12=${themeCfg.window.bold.color12}"
|
|
"13=${themeCfg.window.bold.color13}"
|
|
"14=${themeCfg.window.bold.color14}"
|
|
"15=${themeCfg.window.bold.color15}"
|
|
"16=${themeCfg.window.extended.color16}"
|
|
"17=${themeCfg.window.extended.color17}"
|
|
"18=${themeCfg.window.extended.color18}"
|
|
"19=${themeCfg.window.extended.color19}"
|
|
];
|
|
background = themeCfg.window.background;
|
|
foreground = themeCfg.window.mainText;
|
|
cursor-color = themeCfg.window.cursor;
|
|
cursor-text = themeCfg.window.cursorText;
|
|
selection-background = themeCfg.window.selection;
|
|
selection-foreground = themeCfg.window.selectionText;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|