summaryrefslogtreecommitdiffstats
path: root/usecases/desktop/graphical/gtk.nix
blob: 4a9f501d51a133c3a5447628533f31a9cd4f5ee1 (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
inputs: {
  config,
  lib,
  pkgs,
  ...
}: let
  gtk4NamedColors = with config.theme.colors; {
    # From the main CSS
    # -----------------

    # TODO: 2 and 4

    blue_1 = fadedBlue;
    blue_3 = neutralBlue;
    blue_5 = brightBlue;

    green_1 = fadedGreen;
    green_3 = neutralGreen;
    green_5 = brightGreen;

    yellow_1 = fadedYellow;
    yellow_3 = neutralYellow;
    yellow_5 = brightYellow;

    orange_1 = fadedOrange;
    orange_3 = neutralOrange;
    orange_5 = brightOrange;

    red_1 = fadedRed;
    red_3 = neutralRed;
    red_5 = brightRed;

    purple_1 = fadedMagenta;
    purple_3 = neutralMagenta;
    purple_5 = brightMagenta;

    # TODO: brown

    # From the dark theme CSS
    # -----------------------

    # TODO: bright dominant
    accent_color = "#8ec07c";
    destructive_color = neutralOrange;
    error_color = neutralOrange;

    warning_bg_color = neutralYellow;

    view_bg_color = background0;
    view_fg_color = foreground;

    window_bg_color = background1;
    window_fg_color = foreground;

    headerbar_bg_color = softBackground;
    headerbar_fg_color = foreground;

    dialog_bg_color = background2;
    dialog_fg_color = foreground;

    popover_bg_color = background2;
    popover_fg_color = foreground;
  };

  gtk4Css = lib.concatStringsSep "\n" (lib.mapAttrsToList
    (name: value: "@define-color ${name} ${value};")
    gtk4NamedColors);

  gtk4CssFile = pkgs.writeText "gtk4.css" gtk4Css;
in {
  home-manager.users.minijackson = {
    gtk = {
      enable = true;
      iconTheme = {
        # TODO: properly modify the colors
        package = pkgs.unstable.tela-circle-icon-theme.override {
          colorVariants = ["brown"];
        };
        name = "Tela-circle-brown-dark";
      };

      theme = {
        package = pkgs.gnome.gnome-themes-extra;
        name = "Adwaita-dark";
      };

      gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
    };

    dconf.settings = {
      "org/gnome/desktop/interface" = {
        color-scheme = "prefer-dark";
      };
    };

    xdg.configFile = {
      # "gtk-3.0/gtk.css".source = gtkCssFile;
      "gtk-4.0/gtk.css".source = gtk4CssFile;
    };
  };
}