nixos/shared/modules/apps/ghostty.nix

71 lines
2.1 KiB
Nix

{lib, config, ...}:
let
cfg = config.ghosttyApp;
in
{
options.ghosttyApp = {
enable = lib.mkEnableOption "enable ghostty terminal";
fontFamily = lib.mkOption {
type = lib.types.str;
default = "Maple Mono NF";
description = "Font family to use in ghostty";
};
enableLigatures = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable font ligatures in ghostty";
};
};
config = lib.mkIf cfg.enable {
programs.ghostty = {
enable = true;
settings = {
font-family = cfg.fontFamily;
# Maple Mono NF OpenType features
# See: https://github.com/subframe7536/maple-font/blob/variable/source/features/README.md
font-feature = lib.mkIf cfg.enableLigatures [
# Ligatures (all Maple Mono ligatures are in calt)
"calt"
# Character variants
"cv02" # Alternative 'a' with top arm
"cv05" # Alternative 'g' double story style
"cv06" # Alternative 'i' without bottom bar
"cv08" # Alternative 'r' with bottom bar
"cv09" # Alternative '7' with middle bar
"cv10" # Alternative 'Z' and 'z' with middle bar
"cv11" # Alternative 'f' with bottom bar
"cv61" # Alternative ',' and ';' with straight tail
"cv62" # Alternative '?' with larger openings
"cv65" # Alternative '&' in handwriting style
# Italic-only variants
"cv31" # Italic 'a' with top arm
"cv32" # Italic 'f' without bottom tail
"cv38" # Italic 'g' double story style
"cv39" # Italic 'i' without bottom bar
"cv41" # Italic 'r' with bottom bar
"cv42" # Italic '7' with middle bar
"cv43" # Italic 'Z' and 'z' with middle bar
"cv44" # Italic 'f' with bottom bar
# CN variant
"cv96" # Full width quotes
];
window-padding-x = 4;
window-padding-y = 4;
keybind = [
"ctrl+shift+plus=increase_font_size:1"
"shift+enter=text:\\n"
];
};
};
};
}