From 5e0f749a08bd6b4af2165976c1e3e0c8db5fc74e Mon Sep 17 00:00:00 2001 From: celeri Date: Mon, 13 May 2024 14:04:05 -0400 Subject: [PATCH] feat(home-manager): add `gnomeShellTheme` option for gtk (#161) * feat(home-manager/gtk): add gnome option Add an option to set the gtk theme as gnome shell's theme using the user-theme gnome extension * implemented feedbacks * style(home-manager): format gtk module --------- Co-authored-by: seth --- modules/home-manager/gtk.nix | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/modules/home-manager/gtk.nix b/modules/home-manager/gtk.nix index 4822f07..8cca3fd 100644 --- a/modules/home-manager/gtk.nix +++ b/modules/home-manager/gtk.nix @@ -4,7 +4,7 @@ , ... }: let - inherit (lib) ctp mkOption types; + inherit (lib) ctp mkOption mkEnableOption types; cfg = config.gtk.catppuccin; enable = cfg.enable && config.gtk.enable; # "dark" and "light" can be used alongside the regular accents @@ -25,6 +25,7 @@ in default = [ "normal" ]; description = "Catppuccin tweaks for gtk"; }; + gnomeShellTheme = mkEnableOption "Catppuccin gtk theme for GNOME Shell"; cursor = ctp.mkCatppuccinOpt "gtk cursors" // { @@ -34,7 +35,7 @@ in config = lib.mkIf enable { assertions = [ - (lib.ctp.assertXdgEnabled "gtk") + (ctp.assertXdgEnabled "gtk") ]; gtk = { @@ -79,5 +80,25 @@ in "gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css"; "gtk-4.0/gtk-dark.css".source = "${gtk4Dir}/gtk-dark.css"; }; + + home.packages = lib.mkIf cfg.gnomeShellTheme [ pkgs.gnomeExtensions.user-themes ]; + + dconf.settings = lib.mkIf cfg.gnomeShellTheme { + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = [ + "user-theme@gnome-shell-extensions.gcampax.github.com" + ]; + }; + "org/gnome/shell/extensions/user-theme" = { + name = config.gtk.theme.name; + }; + "org/gnome/desktop/interface" = { + color-scheme = + if cfg.flavour == "latte" + then "default" + else "prefer-dark"; + }; + }; }; }