From 2cd3a1cee4fee518feffb99f0da7f710c0f75557 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Sun, 30 Aug 2026 12:45:24 +0800 Subject: [PATCH] refactor(home): share XDG base configuration --- home/base/core/xdg.nix | 10 ++++++++++ home/darwin/default.nix | 3 --- home/linux/gui/base/xdg/default.nix | 19 +++++-------------- .../tests/home-manager-xdg/expected.nix | 14 ++++++++++++++ .../tests/home-manager-xdg/expr.nix | 19 +++++++++++++++++++ 5 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 home/base/core/xdg.nix create mode 100644 outputs/x86_64-linux/tests/home-manager-xdg/expected.nix create mode 100644 outputs/x86_64-linux/tests/home-manager-xdg/expr.nix diff --git a/home/base/core/xdg.nix b/home/base/core/xdg.nix new file mode 100644 index 00000000..460b56d5 --- /dev/null +++ b/home/base/core/xdg.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + xdg = { + enable = true; + cacheHome = "${config.home.homeDirectory}/.cache"; + configHome = "${config.home.homeDirectory}/.config"; + dataHome = "${config.home.homeDirectory}/.local/share"; + stateHome = "${config.home.homeDirectory}/.local/state"; + }; +} diff --git a/home/darwin/default.nix b/home/darwin/default.nix index 57db0445..ee3f1fce 100644 --- a/home/darwin/default.nix +++ b/home/darwin/default.nix @@ -17,7 +17,4 @@ ../base/gui ../base/home.nix ]; - - # enable management of XDG base directories on macOS. - xdg.enable = true; } diff --git a/home/linux/gui/base/xdg/default.nix b/home/linux/gui/base/xdg/default.nix index 7b50878d..935371b7 100644 --- a/home/linux/gui/base/xdg/default.nix +++ b/home/linux/gui/base/xdg/default.nix @@ -16,21 +16,12 @@ xdg-user-dirs ]; - xdg = { + xdg.userDirs = { enable = true; - - cacheHome = "${config.home.homeDirectory}/.cache"; - configHome = "${config.home.homeDirectory}/.config"; - dataHome = "${config.home.homeDirectory}/.local/share"; - stateHome = "${config.home.homeDirectory}/.local/state"; - - userDirs = { - enable = true; - setSessionVariables = true; - createDirectories = true; - extraConfig = { - SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots"; - }; + setSessionVariables = true; + createDirectories = true; + extraConfig = { + SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; } diff --git a/outputs/x86_64-linux/tests/home-manager-xdg/expected.nix b/outputs/x86_64-linux/tests/home-manager-xdg/expected.nix new file mode 100644 index 00000000..da2ff8d3 --- /dev/null +++ b/outputs/x86_64-linux/tests/home-manager-xdg/expected.nix @@ -0,0 +1,14 @@ +{ myvars, lib }: +let + username = myvars.username; +in +lib.genAttrs + [ + "ai-niri" + "aquamarine" + "ruby" + ] + (_: { + enable = true; + stateHome = "/home/${username}/.local/state"; + }) diff --git a/outputs/x86_64-linux/tests/home-manager-xdg/expr.nix b/outputs/x86_64-linux/tests/home-manager-xdg/expr.nix new file mode 100644 index 00000000..eccf05c2 --- /dev/null +++ b/outputs/x86_64-linux/tests/home-manager-xdg/expr.nix @@ -0,0 +1,19 @@ +{ + myvars, + lib, + outputs, +}: +let + username = myvars.username; + hosts = [ + "ai-niri" + "aquamarine" + "ruby" + ]; +in +lib.genAttrs hosts (name: { + inherit (outputs.nixosConfigurations.${name}.config.home-manager.users.${username}.xdg) + enable + stateHome + ; +})