{ config, pkgs, ... }: let inherit (import ../lib) defaultApplications theme; sgr = code: string: ''\u001b[${code}m${string}\u001b[0m''; in { environment.systemPackages = [ (pkgs.writers.writeDashBin "notifications" '' ${pkgs.dunst}/bin/dunstctl history \ | ${pkgs.jq}/bin/jq -r ' .data[] | map("${sgr "90" ''\(.appname.data)''} ${sgr "1" ''\(.summary.data)''} ${sgr "31" ''\(.body.data | gsub("\n"; " | "))''}") | join("\n")' '') ]; home-manager.users.me.services.dunst = { enable = true; iconTheme = (theme pkgs).icon; settings = { global = { transparency = 10; geometry = "200x5-30+20"; follow = "mouse"; indicate_hidden = true; notification_height = 0; separator_height = 2; padding = 8; horizontal_padding = 8; sort = true; markup = "full"; format = "%a\\n%s\\n%b"; alignment = "left"; show_age_threshold = 60; bounce_freq = 0; word_wrap = true; ellipsize = "middle"; ignore_newline = false; stack_duplicates = true; hide_duplicate_count = false; max_icon_size = 32; sticky_history = true; history_length = 20; dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run"; browser = (defaultApplications pkgs).browser; verbosity = "mesg"; corner_radius = 0; mouse_left_click = "do_action"; mouse_right_click = "close_current"; mouse_middle_click = "close_all"; }; urgency_low = { timeout = 5; }; urgency_normal = { timeout = 10; }; urgency_critical = { timeout = 0; }; }; }; }