summaryrefslogtreecommitdiffstats
path: root/usecases
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2025-02-27 21:55:43 +0100
committerMinijackson <minijackson@riseup.net>2025-02-27 21:55:43 +0100
commitd6c6840ef050be0cd747426e5d95e7d55d115fdd (patch)
tree6e51bfd1044773f704bd0a27a89a80c1f39629d1 /usecases
parente6cba2dd64281af9f249db9f7a38b416ef2242f9 (diff)
downloadnixos-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.nix167
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 @@
1inputs: { 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; 8let
8 9 inherit (config) location;
9 gtk3CssFile = 10in
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;
96in {
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}