diff options
Diffstat (limited to 'gnu/home')
-rw-r--r-- | gnu/home/services.scm | 25 | ||||
-rw-r--r-- | gnu/home/services/symlink-manager.scm | 25 | ||||
-rw-r--r-- | gnu/home/services/xdg.scm | 5 |
3 files changed, 46 insertions, 9 deletions
diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 41e60886d0..8284a4f3fc 100644 --- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -39,6 +39,7 @@ home-environment-variables-service-type home-files-service-type home-xdg-configuration-files-service-type + home-xdg-data-files-service-type home-run-on-first-login-service-type home-activation-service-type home-run-on-change-service-type @@ -46,6 +47,7 @@ home-files-directory xdg-configuration-files-directory + xdg-data-files-directory fold-home-service-types home-provenance @@ -306,6 +308,29 @@ directory containing FILES." (description "Files that will be put in @file{~~/.guix-home/files/.config}, and further processed during activation."))) +(define xdg-data-files-directory ".local/share") + +(define (xdg-data-files files) + "Add .local/share prefix to each file-path in FILES." + (map (match-lambda + ((file-path . rest) + (cons (string-append xdg-data-files-directory "/" file-path) + rest))) + files)) + +(define home-xdg-data-files-service-type + (service-type (name 'home-xdg-data) + (extensions + (list (service-extension home-files-service-type + xdg-data-files))) + (compose concatenate) + (extend append) + (default-value '()) + (description "Files that will be put in +@file{~~/.guix-home/files/.local/share}, and further processed during +activation."))) + + (define %initialize-gettext #~(begin (bindtextdomain %gettext-domain diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm index b7a66c5518..24d21bfad3 100644 --- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -54,6 +54,10 @@ (or (getenv "XDG_CONFIG_HOME") (string-append (getenv "HOME") "/.config"))) + (define xdg-data-home + (or (getenv "XDG_DATA_HOME") + (string-append (getenv "HOME") "/.local/share"))) + (define backup-directory (string-append home-directory "/" (number->string (current-time)) "-guix-home-legacy-configs-backup")) @@ -61,13 +65,20 @@ (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))) - file)) + (cond + ((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-prefix? #$xdg-data-files-directory file) + (string-append + (substring xdg-data-home + (1+ (string-length home-directory))) + (substring file + (string-length #$xdg-data-files-directory)))) + (else file))) (define (target-file file) ;; Return the target of FILE, a config file name sans leading dot diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm index 3b504d7d09..71c028c788 100644 --- a/gnu/home/services/xdg.scm +++ b/gnu/home/services/xdg.scm @@ -421,7 +421,8 @@ that the application cannot open the specified MIME type.") (define (add-xdg-desktop-entry-file entry) (let ((file (first entry)) (config (second entry))) - (list (format #f ".local/share/applications/~a" file) + ;; TODO: Use xdg-data-files instead of home-files here + (list (format #f "applications/~a" file) (apply mixed-text-file (format #f "xdg-desktop-~a-entry" file) config)))) @@ -468,7 +469,7 @@ that the application cannot open the specified MIME type.") (service-type (name 'home-xdg-mime-applications) (extensions (list (service-extension - home-files-service-type + home-xdg-data-files-service-type home-xdg-mime-applications-files) (service-extension home-xdg-configuration-files-service-type |