profiles: xdg-mime-database: Run the hook when have GLib based applications.

Message ID 20160811132118.30771-1-iyzsong@gmail.com
State New
Headers

Commit Message

宋文武 Aug. 11, 2016, 1:21 p.m. UTC
  * guix/profiles.scm (xdg-mime-database): Run the hook when GLIB is referenced by
the manifest.  Add SHARED-MIME-INFO to the mime packages of `update-mime-database'.
---
 guix/profiles.scm | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
  

Patch

diff --git a/guix/profiles.scm b/guix/profiles.scm
index 9c2dbba..169c700 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -732,9 +732,12 @@  MIME type."
 (define (xdg-mime-database manifest)
   "Return a derivation that builds the @file{mime.cache} database from manifest
 entries.  It's used to query the MIME type of a given file."
-  (mlet %store-monad ((shared-mime-info
+  (define shared-mime-info  ; lazy reference
+    (module-ref (resolve-interface '(gnu packages gnome)) 'shared-mime-info))
+
+  (mlet %store-monad ((glib
                        (manifest-lookup-package
-                        manifest "shared-mime-info")))
+                        manifest "glib")))
     (define build
       (with-imported-modules  '((guix build utils)
                                 (guix build union))
@@ -747,7 +750,8 @@  entries.  It's used to query the MIME type of a given file."
                    (pkgdirs (filter file-exists?
                                     (map (cut string-append <>
                                               "/share/mime/packages")
-                                         '#$(manifest-inputs manifest))))
+                                         (cons #+shared-mime-info
+                                               '#$(manifest-inputs manifest)))))
                    (update-mime-database (string-append
                                           #+shared-mime-info
                                           "/bin/update-mime-database")))
@@ -757,8 +761,8 @@  entries.  It's used to query the MIME type of a given file."
               (setenv "XDG_DATA_HOME" datadir)
               (exit (zero? (system* update-mime-database destdir)))))))
 
-    ;; Don't run the hook when 'shared-mime-info' is referenced.
-    (if shared-mime-info
+    ;; Don't run the hook when there are no GLib based applications.
+    (if glib
         (gexp->derivation "xdg-mime-database" build
                           #:local-build? #t
                           #:substitutable? #f)