From d08ed8de3ead1a704a96e0e6673dffb62f859597 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Thu, 21 Jul 2022 15:24:32 +0300 Subject: [PATCH 1/2] home: xdg: Use closures in activation scripts. * gnu/home/services/xdg.scm (ensure-xdg-base-dirs-on-activation, home-xdg-user-directories-files-service): Use closures in activation scripts. --- gnu/home/services/xdg.scm | 41 ++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm index 71c028c788..5a41dc4994 100644 --- a/gnu/home/services/xdg.scm +++ b/gnu/home/services/xdg.scm @@ -23,6 +23,7 @@ (define-module (gnu home services xdg) #:use-module (gnu packages freedesktop) #:use-module (gnu home services utils) #:use-module (guix gexp) + #:use-module (guix modules) #:use-module (guix records) #:use-module (guix i18n) #:use-module (guix diagnostics) @@ -105,16 +106,17 @@ (define (home-xdg-base-directories-environment-variables-service config) home-xdg-base-directories-configuration-fields)) (define (ensure-xdg-base-dirs-on-activation config) - #~(map (lambda (xdg-base-dir-variable) - ((@@ (guix build utils) mkdir-p) - (getenv - xdg-base-dir-variable))) - '#$(map (lambda (field) - (format - #f "XDG_~a" - (object->snake-case-string - (configuration-field-name field) 'upper))) - home-xdg-base-directories-configuration-fields))) + (with-imported-modules '((guix build utils)) + #~(map (lambda (xdg-base-dir-variable) + ((@ (guix build utils) mkdir-p) + (getenv + xdg-base-dir-variable))) + '#$(map (lambda (field) + (format + #f "XDG_~a" + (object->snake-case-string + (configuration-field-name field) 'upper))) + home-xdg-base-directories-configuration-fields)))) (define (last-extension-or-cfg config extensions) "Picks configuration value from last provided extension. If there @@ -205,14 +207,17 @@ (define (home-xdg-user-directories-activation-service config) (let ((dirs (map (lambda (field) ((configuration-field-getter field) config)) home-xdg-user-directories-configuration-fields))) - #~(let ((ensure-dir - (lambda (path) - (mkdir-p - ((@@ (ice-9 string-fun) string-replace-substring) - path "$HOME" (getenv "HOME")))))) - (display "Creating XDG user directories...") - (map ensure-dir '#$dirs) - (display " done\n")))) + (with-imported-modules `((guix build utils) + ,@(source-module-closure + '((ice-9 string-fun)))) + #~(let ((ensure-dir + (lambda (path) + ((@ (guix build utils) mkdir-p) + ((@ (ice-9 string-fun) string-replace-substring) + path "$HOME" (getenv "HOME")))))) + (display "Creating XDG user directories...") + (map ensure-dir '#$dirs) + (display " done\n"))))) (define home-xdg-user-directories-service-type (service-type (name 'home-xdg-user-directories) -- 2.37.0