328 lines
7.0 KiB
Nix

{ lib, theme, ... }:
let
batTheme = ".config/yazi/catppuccin-${theme.flavor}.tmTheme";
in
{
# TODO use catppuccin theme
home.file.${batTheme}.source = ./catppuccin-mocha.tmTheme;
programs.yazi = {
enable = true;
settings = {
manager = {
ratio = [
2
4
2
];
sort_by = "natural";
sort_sensitive = true;
sort_reverse = false;
sort_dir_first = true;
linemode = "none";
show_hidden = true;
show_symlink = true;
};
preview = {
image_filter = "lanczos3";
image_quality = 90;
tab_size = 1;
max_width = 600;
max_height = 900;
cache_dir = "";
ueberzug_scale = 1;
ueberzug_offset = [
0
0
0
0
];
};
tasks = {
micro_workers = 5;
macro_workers = 10;
bizarre_retry = 5;
};
};
theme = lib.mkForce {
manager = {
cwd = {
fg = "#${theme.tealAlpha}";
};
hovered = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.blueAlpha}";
};
preview_hovered = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.textAlpha}";
};
find_keyword = {
fg = "#${theme.yellowAlpha}";
italic = true;
};
find_position = {
fg = "#${theme.pinkAlpha}";
bg = "reset";
italic = true;
};
marker_copied = {
fg = "#${theme.greenAlpha}";
bg = "#${theme.greenAlpha}";
};
marker_cut = {
fg = "#${theme.redAlpha}";
bg = "#${theme.redAlpha}";
};
marker_marked = {
fg = "#${theme.tealAlpha}";
bg = "#${theme.tealAlpha}";
};
marker_selected = {
fg = "#${theme.blueAlpha}";
bg = "#${theme.blueAlpha}";
};
tab_active = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.textAlpha}";
};
tab_inactive = {
fg = "#${theme.textAlpha}";
bg = "#${theme.surface1Alpha}";
};
tab_width = 1;
count_copied = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.greenAlpha}";
};
count_cut = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.redAlpha}";
};
count_selected = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.blueAlpha}";
};
border_symbol = "";
border_style.fg = "#${theme.overlay1Alpha}";
syntect_theme = "~/${batTheme}";
};
mode = {
normal_main = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.blueAlpha}";
bold = true;
};
normal_alt = {
fg = "#${theme.blueAlpha}";
bg = "#${theme.surface0Alpha}";
};
select_main = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.greenAlpha}";
bold = true;
};
select_alt = {
fg = "#${theme.greenAlpha}";
bg = "#${theme.surface0Alpha}";
};
unset_main = {
fg = "#${theme.baseAlpha}";
bg = "#${theme.flamingoAlpha}";
bold = true;
};
unset_alt = {
fg = "#${theme.flamingoAlpha}";
bg = "#${theme.surface0Alpha}";
};
};
status = {
separator_open = "";
separator_close = "";
progress_label = {
fg = "#ffffff";
bold = true;
};
progress_normal = {
fg = "#${theme.blueAlpha}";
bg = "#${theme.surface1Alpha}";
};
progress_error = {
fg = "#${theme.redAlpha}";
bg = "#${theme.surface1Alpha}";
};
perm_type = {
fg = "#${theme.blueAlpha}";
};
perm_read = {
fg = "#${theme.yellowAlpha}";
};
perm_write = {
fg = "#${theme.redAlpha}";
};
perm_exec = {
fg = "#${theme.greenAlpha}";
};
perm_sep = {
fg = "#${theme.overlay1Alpha}";
};
};
input = {
border = {
fg = "#${theme.blueAlpha}";
};
title = { };
value = { };
selected.reversed = true;
};
pick = {
border = {
fg = "#${theme.blueAlpha}";
};
active = {
fg = "#${theme.pinkAlpha}";
};
inactive = { };
};
confirm = {
border = {
fg = "#${theme.blueAlpha}";
};
title = {
fg = "#${theme.blueAlpha}";
};
content = { };
list = { };
btn_yes = {
reversed = true;
};
btn_no = { };
};
completion = {
border = {
fg = "#${theme.blueAlpha}";
};
};
tasks = {
border = {
fg = "#${theme.blueAlpha}";
};
title = { };
hovered = {
underline = true;
};
};
which = {
mask = {
bg = "#${theme.surface0Alpha}";
};
cand = {
fg = "#${theme.tealAlpha}";
};
rest = {
fg = "#9399b2";
};
desc = {
fg = "#${theme.pinkAlpha}";
};
separator = " ";
separator_style = {
fg = "#${theme.surface2Alpha}";
};
};
help = {
on = {
fg = "#${theme.tealAlpha}";
};
run = {
fg = "#${theme.pinkAlpha}";
};
desc = {
fg = "#9399b2";
};
hovered = {
bg = "#${theme.surface2Alpha}";
bold = true;
};
footer = {
fg = "#${theme.textAlpha}";
bg = "#${theme.surface1Alpha}";
};
};
notify = {
title_info = {
fg = "#${theme.tealAlpha}";
};
title_warn = {
fg = "#${theme.yellowAlpha}";
};
title_error = {
fg = "#${theme.redAlpha}";
};
};
filetype = {
rules = [
# Media
{
mime = "image/*";
fg = "#${theme.tealAlpha}";
}
{
mime = "{audio;video}/*";
fg = "#${theme.yellowAlpha}";
}
# Archives
{
mime = "application/*zip";
fg = "#${theme.pinkAlpha}";
}
{
mime = "application/x-{tar;bzip*;7z-compressed;xz;rar}";
fg = "#${theme.pinkAlpha}";
}
# Documents
{
mime = "application/{pdf;doc;rtf}";
fg = "#${theme.greenAlpha}";
}
# Fallback
{
name = "*";
fg = "#${theme.textAlpha}";
}
{
name = "*/";
fg = "#${theme.blueAlpha}";
}
];
};
icon = import ./icons.nix;
};
};
}