123 lines
3.2 KiB
Nix
123 lines
3.2 KiB
Nix
|
{
|
||
|
lib,
|
||
|
config,
|
||
|
namespace,
|
||
|
...
|
||
|
}:
|
||
|
let
|
||
|
inherit (lib)
|
||
|
mkIf
|
||
|
enabled
|
||
|
disabled
|
||
|
mkMerge
|
||
|
;
|
||
|
inherit (lib.${namespace}) mkEnableModule;
|
||
|
|
||
|
cfg = config.${namespace}.services.dunst;
|
||
|
inherit (config.${namespace}) theme;
|
||
|
|
||
|
isRosePine = theme.colors.base == "rose-pine";
|
||
|
in
|
||
|
{
|
||
|
options = mkEnableModule "services.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.
|
||
|
"${theme.colors.base}" = if isRosePine then disabled else enabled;
|
||
|
|
||
|
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";
|
||
|
};
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
}
|