@@ -1905,6 +1905,34 @@ (define (texlive-font-maps manifest)
(hook . texlive-font-maps)))
(return #f))))
+(define (udev-hwdb-bin manifest)
+ "Return a derivation that builds lib/udev/hwdb.bin."
+ (define eudev
+ (module-ref (resolve-interface '(gnu packages linux)) 'eudev))
+ (define build
+ (with-imported-modules
+ (source-module-closure '((guix build utils)))
+ #~(begin
+ (use-modules (guix build utils))
+ (let* ((inputs '#$(manifest-inputs manifest))
+ (hwdb-directories
+ (filter
+ file-exists?
+ (map (lambda (directory)
+ (string-append directory "/lib/udev/hwdb.d"))
+ inputs))))
+ (setenv "UDEV_HWDB_PATH"
+ (string-join hwdb-directories ":")))
+ (invoke #$(file-append eudev "/bin/udevadm")
+ "hwdb" "--update"
+ "-o" (string-append #$output "/lib/udev/hwdb.bin")))))
+ (gexp->derivation "udev-hwdb-bin" build
+ #:substitutable? #f
+ #:local-build? #t
+ #:properties
+ `((type . profile-hook)
+ (hook . udev-hwdb-bin))))
+
(define %default-profile-hooks
;; This is the list of derivation-returning procedures that are called by
;; default when making a non-empty profile.
@@ -1919,6 +1947,7 @@ (define %default-profile-hooks
gtk-icon-themes
gtk-im-modules
texlive-font-maps
+ udev-hwdb-bin
xdg-desktop-database
xdg-mime-database))