summaryrefslogtreecommitdiff
path: root/lib/theme.nix
blob: 71b6944bcfe159dd341b2944fc6693e55c7fc8f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
{ 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;
    };
  };
}