Signed-off-by: Bloxx12 <charlie@charlieroot.dev> Change-Id: I6a6a69641c36f9763e104087a559c148d0449f00
82 lines
2.2 KiB
Nix
82 lines
2.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib.lists) elem;
|
|
inherit (lib.meta) getExe;
|
|
inherit (lib.attrsets) mapAttrsToList;
|
|
inherit (lib.strings) concatStringsSep;
|
|
|
|
inherit (config.meta.mainUser.defaultShell) name package;
|
|
inherit (config.modules.style.colorScheme) slug;
|
|
|
|
# Shell integration for ghostty only supports
|
|
# bash, fish and zsh for now.
|
|
shell-integration =
|
|
if
|
|
elem name [
|
|
"bash"
|
|
"fish"
|
|
"zsh"
|
|
]
|
|
then
|
|
name
|
|
else
|
|
"none";
|
|
|
|
ghostty-settings = {
|
|
font-size = 14;
|
|
font-family = "JetBrainsMonoNerdFont";
|
|
# font-style-bold = JetBrainsMono NF Regular;
|
|
# font-style-bold-italic = JetBrainsMono NF Italic;
|
|
|
|
app-notifications = "no-clipboard-copy";
|
|
background-opacity = 0.9;
|
|
bold-is-bright = "true";
|
|
confirm-close-surface = "false";
|
|
cursor-style-blink = "false";
|
|
gtk-single-instance = "true";
|
|
gtk-tabs-location = "bottom";
|
|
gtk-wide-tabs = false;
|
|
mouse-hide-while-typing = "true";
|
|
resize-overlay-duration = "0s";
|
|
shell-integration-features = "cursor,sudo,no-title";
|
|
term = "xterm-256color";
|
|
theme = slug;
|
|
window-decoration = "none";
|
|
window-padding-balance = true;
|
|
window-padding-x = 8;
|
|
window-padding-y = 8;
|
|
window-theme = "ghostty";
|
|
cursor-style = "block";
|
|
|
|
# Whether to automatically copy selected text to the clipboard. true will prefer to copy to the selection clipboard, otherwise it will copy to the system clipboard.
|
|
# The value clipboard will always copy text to the selection clipboard as well as the system clipboard.
|
|
copy-on-select = "clipboard";
|
|
inherit shell-integration;
|
|
|
|
command = getExe package;
|
|
};
|
|
|
|
settingsFile =
|
|
pkgs.writeText "config"
|
|
<| concatStringsSep "\n"
|
|
<| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings;
|
|
|
|
ghostty-wrapped = pkgs.symlinkJoin {
|
|
name = "ghostty-wrapped";
|
|
paths = [ pkgs.ghostty ];
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}"
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
environment.systemPackages = builtins.attrValues {
|
|
inherit ghostty-wrapped;
|
|
};
|
|
}
|