sneeuwvlok/modules/desktop/terminal/alacritty.nix

99 lines
2.3 KiB
Nix

{
config,
options,
lib,
pkgs,
...
}: let
inherit (builtins) toString;
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
in {
options.modules.desktop.terminal.alacritty = let
inherit (lib.options) mkEnableOption;
in { enable = mkEnableOption "OpenGL terminal emulator"; };
config = mkIf config.modules.desktop.terminal.alacritty.enable {
modules.shell.toolset.tmux.enable = true;
hm.programs.alacritty = {
enable = true;
settings = mkMerge [
{
env = {
TERM = "xterm-256color";
WINIT_X11_SCALE_FACTOR = "1.0";
};
window.dynamic_title = true;
scrolling = {
history = 5000;
multiplier = 3;
};
selection = {
semantic_escape_chars = '',`|:"' ()[]{}<>'';
save_to_clipboard = false;
};
live_config_reload = true;
shell = {
program = "${getExe pkgs.zsh}";
args = ["-l" "-c" "tmux new || tmux"];
};
}
# (mkIf (active != null) {
# import = ["~/.config/alacritty/config/${active}.toml"];
# })
];
};
# create.configFile = mkIf (active != null) {
# alacritty-conf = {
# target = "alacritty/config/${active}.toml";
# source = let
# inherit (config.modules.themes.font) mono sans;
# tomlFormat = pkgs.formats.toml {};
# in tomlFormat.generate "alacritty-theme" {
# font = {
# builtin_box_drawing = true;
# size = mono.size;
#
# normal = {
# family = "${mono.family}";
# style = "${sans.weight}";
# };
#
# italic = {
# family = "${mono.family}";
# style = "${sans.weight} Italic";
# };
#
# bold = {
# family = "${mono.family}";
# style = "${mono.weight}";
# };
#
# bold_italic = {
# family = "${mono.family}";
# style = "${mono.weight} Italic";
# };
#
# offset = {
# x = 0;
# y = 0;
# };
# glyph_offset = {
# x = 0;
# y = 0;
# };
# };
# };
# };
# };
};
}