dotfiles/home/common/ghostty.nix

164 lines
4.2 KiB
Nix
Raw Normal View History

2024-08-10 23:06:08 +02:00
{
config,
inputs,
lib,
pkgs,
...
}:
let
launch-ghostty = pkgs.writeShellApplication {
name = "launch-ghostty";
text = ''
if [ "$(gsettings get org.gnome.desktop.interface color-scheme)" = "'prefer-dark'" ]; then
theme="theme_dark"
else
theme="theme_light"
fi
exec ghostty --config-file="$HOME/.config/ghostty/$theme" "$@"
'';
};
in
2024-08-10 23:06:08 +02:00
{
2024-09-02 14:43:17 +02:00
config = lib.mkIf config.patagia.desktop.enable {
2024-08-10 23:06:08 +02:00
home.packages = with pkgs; [
inputs.ghostty.packages.${pkgs.system}.default
launch-ghostty
];
2024-08-10 23:06:08 +02:00
programs.ghostty = {
enable = true;
settings = {
font-size = 14;
font-family = "Berkeley Mono Variable";
font-family-bold-italic = "Monaspace Xenon";
font-style-bold-italic = "ExtraLight Italic";
2024-09-02 19:48:38 +02:00
font-synthetic-style = false;
font-variation-italic = [ "wght=100" ];
2024-08-10 23:06:08 +02:00
adjust-cell-height = 1;
adjust-cursor-thickness = 5;
adjust-font-baseline = 1;
adjust-underline-position = 2;
adjust-underline-thickness = -1;
2024-08-10 23:06:08 +02:00
mouse-hide-while-typing = true;
cursor-style = "block";
unfocused-split-opacity = 1.0;
2024-08-10 23:06:08 +02:00
shell-integration = "fish";
2024-08-12 08:47:40 +02:00
window-decoration = false;
2024-08-10 23:06:08 +02:00
gtk-tabs-location = "bottom";
window-padding-x = 12;
window-padding-y = 0;
2024-08-10 23:06:08 +02:00
window-padding-balance = true;
window-padding-color = "extend";
window-theme = "system";
keybind = [
"alt+shift+c=copy_to_clipboard"
2024-08-10 23:06:08 +02:00
"alt+shift+v=paste_from_clipboard"
"ctrl+tab=goto_split:previous"
"super+enter=toggle_fullscreen"
"ctrl+enter=unbind"
2024-08-11 23:13:02 +02:00
"alt+one=unbind"
"alt+two=unbind"
"alt+three=unbind"
"alt+four=unbind"
"alt+five=unbind"
"alt+six=unbind"
"alt+seven=unbind"
"alt+eight=unbind"
"alt+nine=unbind"
2024-08-10 23:06:08 +02:00
];
};
};
xdg.configFile."ghostty/theme_dark".text = ''
background = #0d1117
foreground = #b2b2b2
cursor-color = #00d992
selection-background = #d7d7d7
selection-foreground = #000000
palette = 0=#000000
palette = 1=#ff0035
palette = 2=#85ff00
palette = 3=#ffc900
palette = 4=#00a7ff
palette = 5=#cb01ff
palette = 6=#00e0ff
palette = 7=#f0f0f0
palette = 8=#444444
palette = 9=#ff8c88
palette = 10=#baff94
palette = 11=#ffe090
palette = 12=#88ccff
palette = 13=#e38dff
palette = 14=#97eeff
palette = 15=#ffffff
'';
xdg.configFile."ghostty/theme_light".text = ''
background = #fefeff
foreground = #222222
cursor-color = #aa0000
selection-background = #ffe6a4
selection-foreground = #483600
palette = 0=#000000
palette = 1=#9e001d
palette = 2=#306300
palette = 3=#deae00
palette = 4=#00669e
palette = 5=#7d009e
palette = 6=#008a9e
palette = 7=#f7f7f7
palette = 8=#b0b0b0
palette = 9=#ff0035
palette = 10=#509e00
palette = 11=#ffc900
palette = 12=#00a7ff
palette = 13=#cb01ff
palette = 14=#00e0ff
palette = 15=#ffffff
'';
xdg.desktopEntries = {
ghostty-local = {
categories = [
"System"
"TerminalEmulator"
];
exec = ''launch-ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
genericName = "Ghostty (local)";
icon = "com.mitchellh.ghostty";
name = "Ghostty (local)";
settings = {
StartupWMClass = "com.mitchellh.ghostty-local";
TryExec = "launch-ghostty";
};
terminal = false;
type = "Application";
};
ghostty-nemo = {
categories = [
"System"
"TerminalEmulator"
];
exec = ''launch-ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
genericName = "Ghostty (nemo)";
icon = "com.mitchellh.ghostty";
name = "Ghostty (nemo)";
settings = {
StartupWMClass = "com.mitchellh.ghostty-nemo";
TryExec = "launch-ghostty";
};
terminal = false;
type = "Application";
};
};
2024-08-10 23:06:08 +02:00
};
}