guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/05: home: Add home-xdg-data-files-service-type.


From: guix-commits
Subject: 05/05: home: Add home-xdg-data-files-service-type.
Date: Fri, 8 Apr 2022 14:16:24 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 20645d8467852990413c1ea9cf81cec82d23defd
Author: Andrew Tropin <andrew@trop.in>
AuthorDate: Tue Mar 29 12:47:39 2022 +0300

    home: Add home-xdg-data-files-service-type.
    
    * gnu/home/services.scm (home-xdg-data-files-service-type): New variable.
    * gnu/home/services/symlink-manager.scm (update-symlinks-script): Add a 
proper
    handling for XDG_DATA_HOME value.
    * gnu/home/services/xdg.scm (home-xdg-mime-applications-service-type): Use
    home-xdg-data-files service.
    
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/home/services.scm                 | 25 +++++++++++++++++++++++++
 gnu/home/services/symlink-manager.scm | 25 ++++++++++++++++++-------
 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]