;;; Add to the Guix Home configuration (home-configuration.scm). ;;; ;;; Registers the Shepherd services that home-manager's targets.guix module ;;; generates into $XDG_STATE_HOME/home-manager/shepherd, every time the ;;; user Shepherd starts. Each file is evaluated in a fresh module that uses ;;; (shepherd service) -- the same thing `herd load root FILE` does, which is ;;; what home-manager activation uses while Shepherd is already running. ;;; ;;; Needs: (use-modules (gnu services) (gnu home services shepherd) (guix gexp)) (define-module (ryan-services guix-home-loader) #:use-module (gnu services) #:use-module (gnu home services shepherd) #:use-module (guix gexp)) (define-public home-manager-shepherd-loader (shepherd-service (provision '(home-manager-services)) (documentation "Register Shepherd services generated by home-manager.") (one-shot? #t) (modules '((ice-9 ftw) (shepherd service))) (start #~(lambda _ (let* ((state (or (getenv "XDG_STATE_HOME") (string-append (getenv "HOME") "/.local/state"))) (dir (string-append state "/home-manager/shepherd")) ;; scandir sorts with string