From d3281688bf9f1d69da5eab3ca795e9df6e489292 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Fri, 13 Mar 2026 14:42:33 -0500 Subject: [PATCH] gtk: warn on gtk4 theme inheritance change The gtk4 theme option still inherits from gtk.theme for users pinned before 26.05, but that fallback was previously silent. Move the default through the shared state-version helper so the compatibility branch emits the standard deprecation warning and stays consistent with other future cleanups. Add a focused test that covers the legacy inheritance path alongside the existing current-state-version test for the null default. Signed-off-by: Austin Horstman --- modules/misc/gtk/gtk4.nix | 20 +++++++++++++++++-- tests/modules/misc/gtk/default.nix | 1 + .../gtk4-stateversion-theme-inheritance.nix | 19 ++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/modules/misc/gtk/gtk4/gtk4-stateversion-theme-inheritance.nix diff --git a/modules/misc/gtk/gtk4.nix b/modules/misc/gtk/gtk4.nix index 9d71f76e..98a7e818 100644 --- a/modules/misc/gtk/gtk4.nix +++ b/modules/misc/gtk/gtk4.nix @@ -45,8 +45,24 @@ in packageExample = "pkgs.gnome.gnome-themes-extra"; } ); - default = if lib.versionOlder config.home.stateVersion "26.05" then cfg.theme else null; - defaultText = literalExpression ''if lib.versionOlder config.home.stateVersion "26.05" then cfg.theme else null''; + inherit + (lib.hm.deprecations.mkStateVersionOptionDefault { + inherit (config.home) stateVersion; + since = "26.05"; + optionPath = [ + "gtk" + "gtk4" + "theme" + ]; + legacy = { + value = cfg.theme; + text = "config.gtk.theme"; + }; + current.value = null; + }) + default + defaultText + ; description = '' Theme for GTK 4 applications. diff --git a/tests/modules/misc/gtk/default.nix b/tests/modules/misc/gtk/default.nix index 69a77242..c206173e 100644 --- a/tests/modules/misc/gtk/default.nix +++ b/tests/modules/misc/gtk/default.nix @@ -15,6 +15,7 @@ # GTK4 gtk4-basic-settings = ./gtk4/gtk4-basic-settings.nix; + gtk4-stateversion-theme-inheritance = ./gtk4/gtk4-stateversion-theme-inheritance.nix; gtk4-theme-css-injection = ./gtk4/gtk4-theme-css-injection.nix; gtk4-no-theme-css-injection = ./gtk4/gtk4-no-theme-css-injection.nix; gtk4-stateversion-no-theme-inheritance = ./gtk4/gtk4-stateversion-no-theme-inheritance.nix; diff --git a/tests/modules/misc/gtk/gtk4/gtk4-stateversion-theme-inheritance.nix b/tests/modules/misc/gtk/gtk4/gtk4-stateversion-theme-inheritance.nix new file mode 100644 index 00000000..785d48bd --- /dev/null +++ b/tests/modules/misc/gtk/gtk4/gtk4-stateversion-theme-inheritance.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +{ + home.stateVersion = "25.11"; + + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + }; + + nmt.script = '' + assertFileRegex home-files/.config/gtk-4.0/settings.ini \ + '^gtk-theme-name=Adwaita-dark$' + assertFileContains home-files/.config/gtk-4.0/gtk.css \ + 'share/themes/Adwaita-dark/gtk-4.0/gtk.css' + ''; +}