home: services: xdg-base-directories: Deprecate XDG_LOG_HOME.
XDG_LOG_HOME is non-standard and log files should go to XDG_STATE_HOME according to the XDG Base Directory Specification. Fixes <https://issues.guix.gnu.org/61809>. * gnu/home/services/desktop.scm (home-dbus-shepherd-services): Log to XDG_STATE_HOME. * gnu/home/services/desktop.scm (home-unclutter-shepherd-services): Log to XDG_STATE_HOME. * gnu/home/services/mcron.scm (home-mcron-shepherd-services): Ditto. * gnu/home/services/pm.scm (home-batsignal-shepherd-services): Ditto. * gnu/home/services/shepherd.scm (launch-shepherd-gexp): Ditto. * gnu/home/services/xdg.scm (home-xdg-base-directories-configuration)[log-home]: Deprecate and unset default value. (home-xdg-base-directories-environment-variables-service) (ensure-xdg-base-dirs-on-activation): Handle field deprecation. (home-xdg-base-directories-service-type): Update description. Co-authored-by: Andrew Tropin <andrew@trop.in> Signed-off-by: Andrew Tropin <andrew@trop.in>master
parent
48cdc47d8c
commit
f74df2ab87
|
@ -214,9 +214,9 @@ according to time of day.")))
|
|||
(cons "DBUS_VERBOSE=1"
|
||||
(default-environment-variables))
|
||||
#:log-file
|
||||
(format #f "~a/dbus.log"
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(format #f "~a/log/dbus.log"
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME"))))))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
|
@ -264,10 +264,10 @@ according to time of day.")))
|
|||
(number->string
|
||||
#$(home-unclutter-configuration-idle-timeout config)))
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME")))
|
||||
"/unclutter.log"))))))
|
||||
"/log/unclutter.log"))))))
|
||||
|
||||
(define home-unclutter-service-type
|
||||
(service-type
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
|
@ -99,10 +99,10 @@ Each message is also prefixed by a timestamp by GNU Shepherd."))
|
|||
#~())
|
||||
#$@files)
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME")))
|
||||
"/mcron.log")))
|
||||
"/log/mcron.log")))
|
||||
(stop #~(make-kill-destructor))
|
||||
(actions
|
||||
(list (shepherd-schedule-action mcron files)))))))))
|
||||
|
|
|
@ -128,10 +128,10 @@
|
|||
(list "-i")
|
||||
(list)))
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))
|
||||
"/batsignal.log")))
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME")))
|
||||
"/log/batsignal.log")))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define home-batsignal-service-type
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -108,9 +108,10 @@ as shepherd package."
|
|||
(or (getenv "XDG_RUNTIME_DIR")
|
||||
(format #f "/run/user/~a" (getuid)))
|
||||
"/shepherd/socket"))
|
||||
(let ((log-dir (or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))))
|
||||
(let* ((state-dir (or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME"))))
|
||||
(log-dir (string-append state-dir "/log")))
|
||||
;; TODO: Remove it, 0.9.2 creates it automatically?
|
||||
((@ (guix build utils) mkdir-p) log-dir)
|
||||
(system*
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021, 2022 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -22,6 +23,7 @@
|
|||
#:use-module (gnu home services)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu home services utils)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (guix records)
|
||||
|
@ -39,7 +41,7 @@
|
|||
home-xdg-base-directories-configuration-config-home
|
||||
home-xdg-base-directories-configuration-data-home
|
||||
home-xdg-base-directories-configuration-state-home
|
||||
home-xdg-base-directories-configuration-log-home
|
||||
home-xdg-base-directories-configuration-log-home ; deprecated
|
||||
home-xdg-base-directories-configuration-runtime-dir
|
||||
|
||||
home-xdg-user-directories-service-type
|
||||
|
@ -77,6 +79,7 @@
|
|||
|
||||
(define (serialize-path field-name val) "")
|
||||
(define path? string?)
|
||||
(define-maybe path)
|
||||
|
||||
(define-configuration home-xdg-base-directories-configuration
|
||||
(cache-home
|
||||
|
@ -97,12 +100,17 @@ read-only shared data, analogus to @file{/usr/share}, but for user.")
|
|||
(path "${XDG_RUNTIME_DIR:-/run/user/$UID}")
|
||||
"Base directory for programs to store user-specific runtime files,
|
||||
like sockets.")
|
||||
;; TODO: deprecated field, use $XDG_STATE_HOME(/log) instead.
|
||||
(log-home
|
||||
(path "$HOME/.local/var/log")
|
||||
maybe-path
|
||||
"Base directory for programs to store log files, analogus to
|
||||
@file{/var/log}, but for user. It is not a part of XDG Base Directory
|
||||
Specification, but helps to make implementation of home services more
|
||||
consistent.")
|
||||
consistent."
|
||||
(lambda (field-name val)
|
||||
(when (maybe-value-set? val)
|
||||
(warn-about-deprecation field-name #f #:replacement 'state-home))
|
||||
(serialize-path field-name val)))
|
||||
(state-home
|
||||
(path "$HOME/.local/state")
|
||||
"Base directory for programs to store state data that should persist
|
||||
|
@ -117,7 +125,13 @@ portable enough to the user to warrant storing them in
|
|||
#f "XDG_~a"
|
||||
(object->snake-case-string (configuration-field-name field) 'upper))
|
||||
((configuration-field-getter field) config)))
|
||||
home-xdg-base-directories-configuration-fields))
|
||||
;; XXX: deprecated field, remove later
|
||||
(if (maybe-value-set?
|
||||
(home-xdg-base-directories-configuration-log-home config))
|
||||
home-xdg-base-directories-configuration-fields
|
||||
(filter-configuration-fields
|
||||
home-xdg-base-directories-configuration-fields
|
||||
'(log-home) #t))))
|
||||
|
||||
(define (ensure-xdg-base-dirs-on-activation config)
|
||||
(with-imported-modules '((guix build utils))
|
||||
|
@ -138,7 +152,14 @@ portable enough to the user to warrant storing them in
|
|||
;; and will be provided by elogind or other service.
|
||||
(and (not (string=? "XDG_RUNTIME_DIR" variable))
|
||||
variable)))
|
||||
home-xdg-base-directories-configuration-fields)))))
|
||||
;; XXX: deprecated field, remove later
|
||||
(if (maybe-value-set?
|
||||
(home-xdg-base-directories-configuration-log-home
|
||||
config))
|
||||
home-xdg-base-directories-configuration-fields
|
||||
(filter-configuration-fields
|
||||
home-xdg-base-directories-configuration-fields
|
||||
'(log-home) #t)))))))
|
||||
|
||||
(define (last-extension-or-cfg config extensions)
|
||||
"Picks configuration value from last provided extension. If there
|
||||
|
@ -157,10 +178,7 @@ are no extensions use configuration instead."
|
|||
(default-value (home-xdg-base-directories-configuration))
|
||||
(compose identity)
|
||||
(extend last-extension-or-cfg)
|
||||
(description "Configure XDG base directories. This
|
||||
service introduces an additional @env{XDG_LOG_HOME} variable. It's not
|
||||
a part of XDG specification, at least yet, but are convenient to have,
|
||||
it improves the consistency between different home services. The
|
||||
(description "Configure XDG base directories. The
|
||||
services of this service-type is instantiated by default, to provide
|
||||
non-default value, extend the service-type (using @code{simple-service}
|
||||
for example).")))
|
||||
|
|
Reference in New Issue