From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= Subject: [PATCH] profiles: Add 'hicolor' and 'HighContrast' icon theme hooks. Date: Sat, 9 May 2015 12:55:36 +0800 Message-ID: <1431147336-4274-1-git-send-email-iyzsong@gmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41353) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yqwn5-0005cW-KQ for guix-devel@gnu.org; Sat, 09 May 2015 00:55:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yqwn0-0000mo-6m for guix-devel@gnu.org; Sat, 09 May 2015 00:55:07 -0400 Received: from mail-pa0-x235.google.com ([2607:f8b0:400e:c03::235]:32862) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yqwn0-0000jl-01 for guix-devel@gnu.org; Sat, 09 May 2015 00:55:02 -0400 Received: by pacwv17 with SMTP id wv17so66024853pac.0 for ; Fri, 08 May 2015 21:55:00 -0700 (PDT) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org * guix/profiles.scm (gtk-icon-theme-hook): New function. (%default-profile-hooks): Add `(gtk-icon-theme-hook "hicolor")' and `(gtk-icon-theme-hook "HighContrast")'. --- guix/profiles.scm | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 11d9bf0..9756685 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -573,12 +573,46 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." #:modules '((guix build utils)) #:local-build? #t)) +(define (gtk-icon-theme-hook name) + "Return a profile hook that unions all NAME icons from manifest entries and +rebuilds the 'icon-theme.cache' file for the NAME icon theme." + (define gtk+ + (module-ref (resolve-interface '(gnu packages gtk)) 'gtk+)) + + (lambda (manifest) + (define build + #~(begin + (use-modules (guix build utils) + (guix build union)) + (let* ((icon-dir (lambda (base) + (string-append base "/share/icons/" #$name))) + (destdir (icon-dir #$output)) + (icons (filter + file-exists? + (map icon-dir '#$(manifest-inputs manifest)))) + (update-icon-cache (string-append + #+gtk+ "/bin/gtk-update-icon-cache"))) + ;; mkdir -p $out/share/icons + (mkdir-p destdir) + (rmdir destdir) + ;; Unions all the icons and update the 'icon-theme.cache'. + (union-build destdir icons) + (system* update-icon-cache "-t" destdir)))) + + (gexp->derivation (string-append (string-downcase name) "-icon-theme") + build + #:modules '((guix build utils) + (guix build union)) + #:local-build? #t))) + (define %default-profile-hooks ;; This is the list of derivation-returning procedures that are called by ;; default when making a non-empty profile. (list info-dir-file ghc-package-cache-file - ca-certificate-bundle)) + ca-certificate-bundle + (gtk-icon-theme-hook "hicolor") + (gtk-icon-theme-hook "HighContrast"))) (define* (profile-derivation manifest #:key -- 2.2.1