marleyos/modules/home/services/dunst/default.nix

120 lines
3.2 KiB
Nix

{
lib,
config,
...
}:
let
inherit (lib)
mkEnableOption
mkIf
mkMerge
;
inherit (lib.marleyos) disabled;
cfg = config.marleyos.services.dunst;
inherit (config.marleyos.theme) colors;
isRosePine = colors.base == "rose-pine";
in
{
options.marleyos.services.dunst.enable = mkEnableOption "dunst";
config = mkIf cfg.enable {
services.dunst = {
enable = true;
# I don't want to use the rose-pine icons; also don't want to deal with
# the drop-in weirdness.
# TODO: Convert dunst.rose-pine to attr set to fix this.
rose-pine = disabled;
settings = mkMerge [
### Rose Pine ###
(mkIf isRosePine {
global = {
width = 400;
offset = "20x60";
progress_bar_min_width = 380;
progress_bar_max_width = 380;
progress_bar_corner_radius = 2;
padding = 10;
horizontal_padding = 10;
frame_width = 1;
gap_size = 3;
corner_radius = 2;
background = "#26233a";
foreground = "#e0def4";
};
urgency_low = {
background = "#26273d";
highlight = "#31748f";
frame_color = "#31748f";
default_icon = "dialog-information";
format = "<b><span foreground='#31748f'>%s</span></b>\\n%b";
};
urgency_normal = {
background = "#362e3c";
highlight = "#f6c177";
frame_color = "#f6c177";
default_icon = "dialog-warning";
format = "<b><span foreground='#f6c177'>%s</span></b>\\n%b";
};
urgency_critical = {
background = "#35263d";
highlight = "#eb6f92";
frame_color = "#eb6f92";
default_icon = "dialog-error";
format = "<b><span foreground='#eb6f92'>%s</span></b>\\n%b";
};
})
### Custom ###
{
global = {
monitor = 0;
sort = "yes";
idle_threshold = 120;
font = (builtins.head config.fonts.fontconfig.defaultFonts.monospace) + " 10";
markup = "full";
show_age_threshold = 60;
word_wrap = "yes";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = "yes";
sticky_history = "yes";
history_length = 20;
browser = "/usr/bin/zen-browser --new-tab";
always_run_script = true;
title = "Dunst";
class = "Dunst";
mouse_left_click = "do_action";
mouse_middle_click = "close_current";
mouse_right_click = "close_all";
};
signed_on = {
appname = "Pidgin";
summary = "*signed on*";
urgency = "low";
};
signed_off = {
appname = "Pidgin";
summary = "*signed off*";
urgency = "low";
};
says = {
appname = "Pidgin";
summary = "*says*";
urgency = "critical";
};
}
];
};
};
}