diff options
author | Minijackson <minijackson@riseup.net> | 2025-02-27 21:55:43 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2025-02-27 21:55:43 +0100 |
commit | d6c6840ef050be0cd747426e5d95e7d55d115fdd (patch) | |
tree | 6e51bfd1044773f704bd0a27a89a80c1f39629d1 /usecases | |
parent | e6cba2dd64281af9f249db9f7a38b416ef2242f9 (diff) | |
download | nixos-config-reborn-d6c6840ef050be0cd747426e5d95e7d55d115fdd.tar.gz nixos-config-reborn-d6c6840ef050be0cd747426e5d95e7d55d115fdd.zip |
usecases/gtk: add darkman, remove custom GTK theme
Diffstat (limited to 'usecases')
-rw-r--r-- | usecases/desktop/graphical/gtk.nix | 167 |
1 files changed, 48 insertions, 119 deletions
diff --git a/usecases/desktop/graphical/gtk.nix b/usecases/desktop/graphical/gtk.nix index 13e0918..e68c322 100644 --- a/usecases/desktop/graphical/gtk.nix +++ b/usecases/desktop/graphical/gtk.nix | |||
@@ -1,131 +1,60 @@ | |||
1 | inputs: { | 1 | _inputs: |
2 | { | ||
2 | config, | 3 | config, |
3 | lib, | 4 | lib, |
4 | pkgs, | 5 | pkgs, |
5 | ... | 6 | ... |
6 | }: let | 7 | }: |
7 | gtk3Colors = ./gtk-colors.scss; | 8 | let |
8 | 9 | inherit (config) location; | |
9 | gtk3CssFile = | 10 | in |
10 | pkgs.stdenv.mkDerivation ({ | 11 | { |
11 | name = "gtk3.css"; | 12 | home-manager.users.minijackson = |
12 | 13 | { config, ... }: | |
13 | src = pkgs.gtk3.src; | 14 | { |
14 | 15 | gtk = { | |
15 | nativeBuildInputs = with pkgs; [sassc]; | 16 | enable = true; |
16 | 17 | gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; | |
17 | patchPhase = '' | 18 | |
18 | cp -f ${gtk3Colors} gtk/theme/Adwaita/_colors.scss | 19 | iconTheme = { |
19 | substituteAllInPlace gtk/theme/Adwaita/_colors.scss | 20 | # TODO: properly modify the colors |
20 | ''; | 21 | # High priority, because gnome-themes-extra below also pulls the |
21 | 22 | # Adwaita icon theme, which leads to a conflict | |
22 | dontConfigure = true; | 23 | package = lib.hiPrio ( |
23 | dontInstall = true; | 24 | pkgs.tela-circle-icon-theme.override { |
24 | 25 | colorVariants = [ "brown" ]; | |
25 | buildPhase = '' | 26 | } |
26 | sassc -a -M -t expanded gtk/theme/Adwaita/gtk-contained-dark.scss $out | 27 | ); |
27 | # These lines contains includes of assets | 28 | name = "Tela-circle-brown-dark"; |
28 | sed -i -e '/-gtk-icon/d' $out; | 29 | }; |
29 | ''; | 30 | |
30 | } | 31 | gtk3.extraConfig.gtk-application-prefer-dark-theme = true; |
31 | // config.theme.colors); | ||
32 | |||
33 | gtk4NamedColors = with config.theme.colors; { | ||
34 | # From the main CSS | ||
35 | # ----------------- | ||
36 | |||
37 | # TODO: 2 and 4 | ||
38 | |||
39 | blue_1 = fadedBlue; | ||
40 | blue_3 = neutralBlue; | ||
41 | blue_5 = brightBlue; | ||
42 | |||
43 | green_1 = fadedGreen; | ||
44 | green_3 = neutralGreen; | ||
45 | green_5 = brightGreen; | ||
46 | |||
47 | yellow_1 = fadedYellow; | ||
48 | yellow_3 = neutralYellow; | ||
49 | yellow_5 = brightYellow; | ||
50 | |||
51 | orange_1 = fadedOrange; | ||
52 | orange_3 = neutralOrange; | ||
53 | orange_5 = brightOrange; | ||
54 | |||
55 | red_1 = fadedRed; | ||
56 | red_3 = neutralRed; | ||
57 | red_5 = brightRed; | ||
58 | |||
59 | purple_1 = fadedMagenta; | ||
60 | purple_3 = neutralMagenta; | ||
61 | purple_5 = brightMagenta; | ||
62 | |||
63 | # TODO: brown | ||
64 | |||
65 | # From the dark theme CSS | ||
66 | # ----------------------- | ||
67 | |||
68 | # TODO: bright dominant | ||
69 | accent_color = "#8ec07c"; | ||
70 | destructive_color = neutralOrange; | ||
71 | error_color = neutralOrange; | ||
72 | |||
73 | warning_bg_color = neutralYellow; | ||
74 | |||
75 | view_bg_color = background0; | ||
76 | view_fg_color = foreground; | ||
77 | |||
78 | window_bg_color = background1; | ||
79 | window_fg_color = foreground; | ||
80 | |||
81 | headerbar_bg_color = softBackground; | ||
82 | headerbar_fg_color = foreground; | ||
83 | |||
84 | dialog_bg_color = background2; | ||
85 | dialog_fg_color = foreground; | ||
86 | |||
87 | popover_bg_color = background2; | ||
88 | popover_fg_color = foreground; | ||
89 | }; | ||
90 | |||
91 | gtk4Css = lib.concatStringsSep "\n" (lib.mapAttrsToList | ||
92 | (name: value: "@define-color ${name} ${value};") | ||
93 | gtk4NamedColors); | ||
94 | |||
95 | gtk4CssFile = pkgs.writeText "gtk4.css" gtk4Css; | ||
96 | in { | ||
97 | home-manager.users.minijackson = {config, ...}: { | ||
98 | gtk = { | ||
99 | enable = true; | ||
100 | gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; | ||
101 | |||
102 | iconTheme = { | ||
103 | # TODO: properly modify the colors | ||
104 | # High priority, because gnome-themes-extra below also pulls the | ||
105 | # Adwaita icon theme, which leads to a conflict | ||
106 | package = lib.hiPrio (pkgs.tela-circle-icon-theme.override { | ||
107 | colorVariants = ["brown"]; | ||
108 | }); | ||
109 | name = "Tela-circle-brown-dark"; | ||
110 | }; | 32 | }; |
111 | 33 | ||
112 | theme = { | 34 | dconf.settings = { |
113 | package = pkgs.gnome-themes-extra; | 35 | "org/gnome/desktop/interface" = { |
114 | name = "Adwaita-dark"; | 36 | color-scheme = "prefer-dark"; |
37 | }; | ||
115 | }; | 38 | }; |
116 | 39 | ||
117 | gtk3.extraConfig.gtk-application-prefer-dark-theme = true; | 40 | services.darkman = { |
118 | }; | 41 | enable = true; |
119 | 42 | ||
120 | dconf.settings = { | 43 | settings = { |
121 | "org/gnome/desktop/interface" = { | 44 | lat = location.latitude; |
122 | color-scheme = "prefer-dark"; | 45 | lng = location.longitude; |
123 | }; | 46 | usegeoclue = location.provider == "geoclue2"; |
124 | }; | 47 | }; |
48 | |||
49 | darkModeScripts.gtk-theme = '' | ||
50 | ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/color-scheme "'prefer-dark'" | ||
51 | ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/gtk-theme "'Adwaita-dark'" | ||
52 | ''; | ||
125 | 53 | ||
126 | xdg.configFile = { | 54 | lightModeScripts.gtk-theme = '' |
127 | # "gtk-3.0/gtk.css".source = gtk3CssFile; | 55 | ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/color-scheme "'prefer-light'" |
128 | "gtk-4.0/gtk.css".source = gtk4CssFile; | 56 | ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/gtk-theme "'Adwaita'" |
57 | ''; | ||
58 | }; | ||
129 | }; | 59 | }; |
130 | }; | ||
131 | } | 60 | } |