From d6c6840ef050be0cd747426e5d95e7d55d115fdd Mon Sep 17 00:00:00 2001 From: Minijackson Date: Thu, 27 Feb 2025 21:55:43 +0100 Subject: usecases/gtk: add darkman, remove custom GTK theme --- common/default.nix | 7 +- usecases/desktop/graphical/gtk.nix | 167 +++++++++++-------------------------- 2 files changed, 54 insertions(+), 120 deletions(-) diff --git a/common/default.nix b/common/default.nix index 30bb3f2..87b9437 100644 --- a/common/default.nix +++ b/common/default.nix @@ -1,6 +1,6 @@ inputs: -{ config, ... }: +{ config, lib, ... }: { imports = [ @@ -28,6 +28,11 @@ inputs: }) ]; + location = { + latitude = lib.mkDefault 48.856667; + longitude = lib.mkDefault 2.352222; + }; + services.nscd.enableNsncd = true; environment.sessionVariables.DO_NOT_TRACK = "1"; 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 @@ -inputs: { +_inputs: +{ config, lib, pkgs, ... -}: let - gtk3Colors = ./gtk-colors.scss; - - gtk3CssFile = - pkgs.stdenv.mkDerivation ({ - name = "gtk3.css"; - - src = pkgs.gtk3.src; - - nativeBuildInputs = with pkgs; [sassc]; - - patchPhase = '' - cp -f ${gtk3Colors} gtk/theme/Adwaita/_colors.scss - substituteAllInPlace gtk/theme/Adwaita/_colors.scss - ''; - - dontConfigure = true; - dontInstall = true; - - buildPhase = '' - sassc -a -M -t expanded gtk/theme/Adwaita/gtk-contained-dark.scss $out - # These lines contains includes of assets - sed -i -e '/-gtk-icon/d' $out; - ''; - } - // config.theme.colors); - - 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 = {config, ...}: { - gtk = { - enable = true; - gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; - - iconTheme = { - # TODO: properly modify the colors - # High priority, because gnome-themes-extra below also pulls the - # Adwaita icon theme, which leads to a conflict - package = lib.hiPrio (pkgs.tela-circle-icon-theme.override { - colorVariants = ["brown"]; - }); - name = "Tela-circle-brown-dark"; +}: +let + inherit (config) location; +in +{ + home-manager.users.minijackson = + { config, ... }: + { + gtk = { + enable = true; + gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; + + iconTheme = { + # TODO: properly modify the colors + # High priority, because gnome-themes-extra below also pulls the + # Adwaita icon theme, which leads to a conflict + package = lib.hiPrio ( + pkgs.tela-circle-icon-theme.override { + colorVariants = [ "brown" ]; + } + ); + name = "Tela-circle-brown-dark"; + }; + + gtk3.extraConfig.gtk-application-prefer-dark-theme = true; }; - theme = { - package = pkgs.gnome-themes-extra; - name = "Adwaita-dark"; + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; }; - gtk3.extraConfig.gtk-application-prefer-dark-theme = true; - }; + services.darkman = { + enable = true; - dconf.settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; + settings = { + lat = location.latitude; + lng = location.longitude; + usegeoclue = location.provider == "geoclue2"; + }; + + darkModeScripts.gtk-theme = '' + ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/color-scheme "'prefer-dark'" + ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/gtk-theme "'Adwaita-dark'" + ''; - xdg.configFile = { - # "gtk-3.0/gtk.css".source = gtk3CssFile; - "gtk-4.0/gtk.css".source = gtk4CssFile; + lightModeScripts.gtk-theme = '' + ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/color-scheme "'prefer-light'" + ${lib.getExe pkgs.dconf} write /org/gnome/desktop/interface/gtk-theme "'Adwaita'" + ''; + }; }; - }; } -- cgit v1.2.3