From f34175838dac46093a26971798b08c0679691b34 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Fri, 11 Mar 2022 10:12:30 +0300 Subject: [PATCH v2 5/5] home: symlink-manager: Respect XDG_CONFIG_HOME during activation. * gnu/home/services/symlink-manager.scm (update-symlinks-script): Respect XDG_CONFIG_HOME during activation. --- gnu/home/services/symlink-manager.scm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm index 16031ea5d3..3b851229f3 100644 --- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -50,14 +50,29 @@ (define (update-symlinks-script) (define home-directory (getenv "HOME")) + (define xdg-config-home + (or (getenv "XDG_CONFIG_HOME") + (string-append (getenv "HOME") "/.config"))) + (define backup-directory (string-append home-directory "/" (number->string (current-time)) "-guix-home-legacy-configs-backup")) + (define (preprocess-file file) + "If file is in XDG-CONFIGURATION-FILES-DIRECTORY use +subdirectory from XDG_CONFIG_HOME to generate a target path." + (if (string-prefix? #$xdg-configuration-files-directory file) + (string-append + (substring xdg-config-home + (1+ (string-length home-directory))) + (substring file + (string-length #$xdg-configuration-files-directory))) + (string-append "." file))) + (define (target-file file) ;; Return the target of FILE, a config file name sans leading dot ;; such as "config/fontconfig/fonts.conf" or "bashrc". - (string-append home-directory "/." file)) + (string-append home-directory "/" (preprocess-file file))) (define (symlink-to-store? file) (catch 'system-error @@ -70,7 +85,7 @@ (define (symlink-to-store? file) (define (backup-file file) (define backup - (string-append backup-directory "/." file)) + (string-append backup-directory "/" (preprocess-file file))) (mkdir-p backup-directory) (format #t (G_ "Backing up ~a...") (target-file file)) -- 2.34.0