From acf65ad7486dd6c7a6901598221bf59187761c54 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Fri, 13 Mar 2026 13:29:21 -0500 Subject: [PATCH] xdg-user-dirs: warn on setSessionVariables default change Switch xdg.userDirs.setSessionVariables to the shared state-version default helper so older configurations get an explicit warning before the legacy default is removed. Add focused tests for the legacy and current branches to verify that the session variable exports remain enabled before 26.05 and are disabled by default starting at 26.05. Signed-off-by: Austin Horstman --- modules/misc/xdg-user-dirs.nix | 19 +++++++++++++++---- tests/modules/misc/xdg/default.nix | 2 ++ .../xdg/user-dirs-session-vars-current.nix | 10 ++++++++++ .../xdg/user-dirs-session-vars-legacy.nix | 10 ++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 tests/modules/misc/xdg/user-dirs-session-vars-current.nix create mode 100644 tests/modules/misc/xdg/user-dirs-session-vars-legacy.nix diff --git a/modules/misc/xdg-user-dirs.nix b/modules/misc/xdg-user-dirs.nix index b50503945..181d6c10b 100644 --- a/modules/misc/xdg-user-dirs.nix +++ b/modules/misc/xdg-user-dirs.nix @@ -136,10 +136,21 @@ in setSessionVariables = mkOption { type = with types; bool; - default = lib.versionOlder config.home.stateVersion "26.05"; - defaultText = literalExpression '' - lib.versionOlder config.home.stateVersion "26.05" - ''; + inherit + (lib.hm.deprecations.mkStateVersionOptionDefault { + inherit (config.home) stateVersion; + since = "26.05"; + optionPath = [ + "xdg" + "userDirs" + "setSessionVariables" + ]; + legacy.value = true; + current.value = false; + }) + default + defaultText + ; description = '' Whether to set the XDG user dir environment variables, like `XDG_DESKTOP_DIR`. diff --git a/tests/modules/misc/xdg/default.nix b/tests/modules/misc/xdg/default.nix index 53ab57cd7..59606edc3 100644 --- a/tests/modules/misc/xdg/default.nix +++ b/tests/modules/misc/xdg/default.nix @@ -7,4 +7,6 @@ xdg-user-dirs-mixed = ./user-dirs-mixed.nix; xdg-user-dirs-null = ./user-dirs-null.nix; xdg-user-dirs-short = ./user-dirs-short.nix; + xdg-user-dirs-session-vars-legacy = ./user-dirs-session-vars-legacy.nix; + xdg-user-dirs-session-vars-current = ./user-dirs-session-vars-current.nix; } diff --git a/tests/modules/misc/xdg/user-dirs-session-vars-current.nix b/tests/modules/misc/xdg/user-dirs-session-vars-current.nix new file mode 100644 index 000000000..0373aeec9 --- /dev/null +++ b/tests/modules/misc/xdg/user-dirs-session-vars-current.nix @@ -0,0 +1,10 @@ +{ + home.stateVersion = "26.05"; + + xdg.userDirs.enable = true; + + nmt.script = '' + assertFileNotRegex home-path/etc/profile.d/hm-session-vars.sh \ + '^export XDG_DESKTOP_DIR=' + ''; +} diff --git a/tests/modules/misc/xdg/user-dirs-session-vars-legacy.nix b/tests/modules/misc/xdg/user-dirs-session-vars-legacy.nix new file mode 100644 index 000000000..4f3957b87 --- /dev/null +++ b/tests/modules/misc/xdg/user-dirs-session-vars-legacy.nix @@ -0,0 +1,10 @@ +{ + home.stateVersion = "25.11"; + + xdg.userDirs.enable = true; + + nmt.script = '' + assertFileContains home-path/etc/profile.d/hm-session-vars.sh \ + 'export XDG_DESKTOP_DIR="/home/hm-user/Desktop"' + ''; +}