{ pkgs, lib }: let inherit (import ./const.nix) homedir; # ef-dream palette from protesilaos/ef-themes efDream = { bg-main = "#232025"; bg-dim = "#322f34"; bg-alt = "#3b393e"; fg-main = "#efd5c5"; fg-dim = "#8f8886"; fg-alt = "#b0a0cf"; cursor = "#f3c09a"; red = "#ff6f6f"; green = "#51b04f"; yellow = "#c0b24f"; blue = "#57b0ff"; magenta = "#ffaacf"; magenta-cooler = "#d0b0ff"; cyan = "#6fb3c0"; }; # ef-reverie (light companion to ef-dream) efReverie = { bg-main = "#f3eddf"; bg-dim = "#e6e0d4"; bg-alt = "#d9d3ca"; fg-main = "#4f204f"; fg-dim = "#6a5a6a"; fg-alt = "#704f4f"; cursor = "#7f007f"; red = "#ba2d2f"; green = "#007a0a"; yellow = "#a45a22"; blue = "#375cc6"; magenta = "#b044aa"; magenta-cooler = "#7f5ae0"; cyan = "#3f60af"; }; xresourcesContent = theme: let p = if theme == "dark" then efDream else efReverie; in '' ! ef-dream/ef-reverie inspired Xresources *background: ${p.bg-main} *foreground: ${p.fg-main} *cursorColor: ${p.cursor} ! black *color0: ${p.bg-main} *color8: ${p.bg-alt} ! red *color1: ${p.red} *color9: ${p.red} ! green *color2: ${p.green} *color10: ${p.green} ! yellow *color3: ${p.yellow} *color11: ${p.yellow} ! blue *color4: ${p.blue} *color12: ${p.blue} ! magenta *color5: ${p.magenta} *color13: ${p.magenta-cooler} ! cyan *color6: ${p.cyan} *color14: ${p.cyan} ! white *color7: ${p.fg-main} *color15: ${p.cursor} ''; in rec { theme = lib.removeSuffix "\n" (builtins.readFile "${homedir}/.local/share/xtheme"); xresourcesFile = pkgs.writeText "ef-xresources" (xresourcesContent theme); # ef-dream/ef-reverie colors for use by dunst, polybar, xmonad, etc. colors = { "dark" = { highlight = efDream.magenta-cooler; background = efDream.bg-main; foreground = efDream.fg-main; cursor = efDream.cursor; red = efDream.red; green = efDream.green; yellow = efDream.yellow; blue = efDream.blue; magenta = efDream.magenta; cyan = efDream.cyan; }; "light" = { highlight = efReverie.magenta-cooler; background = efReverie.bg-main; foreground = efReverie.fg-main; cursor = efReverie.cursor; red = efReverie.red; green = efReverie.green; yellow = efReverie.yellow; blue = efReverie.blue; magenta = efReverie.magenta; cyan = efReverie.cyan; }; }; }