mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-19 05:57:04 +01:00
services: unattended-upgrade: Add 'operating-system-file' field.
* gnu/services/admin.scm (<unattended-upgrade-configuration>)[operating-system-file]: New field. (unattended-upgrade-mcron-jobs): Honor it. * doc/guix.texi (Unattended Upgrades): Document it.
This commit is contained in:
parent
54a87b2a0c
commit
0d203eeaa6
2 changed files with 30 additions and 2 deletions
|
@ -15393,6 +15393,29 @@ This gexp specifies the channels to use for the upgrade
|
|||
(@pxref{Channels}). By default, the tip of the official @code{guix}
|
||||
channel is used.
|
||||
|
||||
@item @code{operating-system-file} (default: @code{"/run/current-system/configuration.scm"})
|
||||
This field specifies the operating system configuration file to use.
|
||||
The default is to reuse the config file of the current configuration.
|
||||
|
||||
There are cases, though, where referring to
|
||||
@file{/run/current-system/configuration.scm} is not enough, for instance
|
||||
because that file refers to extra files (SSH public keys, extra
|
||||
configuration files, etc.) @i{via} @code{local-file} and similar
|
||||
constructs. For those cases, we recommend something along these lines:
|
||||
|
||||
@lisp
|
||||
(unattended-upgrade-configuration
|
||||
(operating-system-file
|
||||
(file-append (local-file "." "config-dir" #:recursive? #t)
|
||||
"/config.scm")))
|
||||
@end lisp
|
||||
|
||||
The effect here is to import all of the current directory into the
|
||||
store, and to refer to @file{config.scm} within that directory.
|
||||
Therefore, uses of @code{local-file} within @file{config.scm} will work
|
||||
as expected. @xref{G-Expressions}, for information about
|
||||
@code{local-file} and @code{file-append}.
|
||||
|
||||
@item @code{services-to-restart} (default: @code{'(mcron)})
|
||||
This field specifies the Shepherd services to restart when the upgrade
|
||||
completes.
|
||||
|
|
|
@ -49,6 +49,7 @@ (define-module (gnu services admin)
|
|||
unattended-upgrade-service-type
|
||||
unattended-upgrade-configuration
|
||||
unattended-upgrade-configuration?
|
||||
unattended-upgrade-configuration-operating-system-file
|
||||
unattended-upgrade-configuration-channels
|
||||
unattended-upgrade-configuration-schedule
|
||||
unattended-upgrade-configuration-services-to-restart
|
||||
|
@ -198,6 +199,8 @@ (define rottlog-service-type
|
|||
(define-record-type* <unattended-upgrade-configuration>
|
||||
unattended-upgrade-configuration make-unattended-upgrade-configuration
|
||||
unattended-upgrade-configuration?
|
||||
(operating-system-file unattended-upgrade-operating-system-file
|
||||
(default "/run/current-system/configuration.scm"))
|
||||
(schedule unattended-upgrade-configuration-schedule
|
||||
(default "30 01 * * 0"))
|
||||
(channels unattended-upgrade-configuration-channels
|
||||
|
@ -228,6 +231,9 @@ (define services
|
|||
(define expiration
|
||||
(unattended-upgrade-system-expiration config))
|
||||
|
||||
(define config-file
|
||||
(unattended-upgrade-operating-system-file config))
|
||||
|
||||
(define code
|
||||
(with-imported-modules (source-module-closure '((guix build utils)
|
||||
(gnu services herd)))
|
||||
|
@ -271,8 +277,7 @@ (define-syntax-rule (with-logging exp ...)
|
|||
(report-invoke-error c)))
|
||||
(invoke #$(file-append guix "/bin/guix")
|
||||
"time-machine" "-C" #$channels
|
||||
"--" "system" "reconfigure"
|
||||
"/run/current-system/configuration.scm")
|
||||
"--" "system" "reconfigure" #$config-file)
|
||||
|
||||
;; 'guix system delete-generations' fails when there's no
|
||||
;; matching generation. Thus, catch 'invoke-error?'.
|
||||
|
|
Loading…
Reference in a new issue