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 9d71f76e0..98a7e8181 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 69a772424..c206173ed 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 000000000..785d48bdf --- /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' + ''; +}