{ user ? throw "user argument is required" }: { config, lib, pkgs, ... }: let hmConfig = config.home-manager.users."${user.name}"; in { home-manager.users."${user.name}" = { gtk = { enable = true; theme = { package = pkgs.adw-gtk3; name = "adw-gtk3-dark"; }; gtk2.configLocation = "${hmConfig.xdg.configHome}/gtk-2.0/gtkrc"; gtk3.extraCss = "@import './theme.css';"; gtk4.extraCss = "@import './theme.css';"; }; programs.matugen.settings.templates = { gtk3 = { input_path = ./theme.css; output_path = "${hmConfig.xdg.configHome}/gtk-3.0/theme.css"; }; gtk4 = { input_path = ./theme.css; output_path = "${hmConfig.xdg.configHome}/gtk-4.0/theme.css"; }; }; theme.extraConfig = "${lib.meta.getExe (pkgs.writeShellApplication { name = "theme-gtk"; runtimeInputs = with pkgs; [ dconf ]; text = '' MODE=$(cat "${hmConfig.theme.configDir}/mode") if [ "$MODE" = "light" ]; then GTK_THEME="adw-gtk3" else GTK_THEME="adw-gtk3-dark" fi dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'" dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'" ''; })} &"; }; }