(address . guix-patches@gnu.org)
Hi,
I’m using a modular machine configuration, i.e. the scheme file returning the
operating system definition imports several other custom modules with service
definitions etc in the same directory. This does not work well with unattended
upgrades. The attached patch allows adding search paths to the unattended
upgrade service. I’m not sure this is the best solution though. Maybe the
preferred way to add these modules is to a custom channel?
The second patch changes the default channels to #f, i.e. the system default
(/etc/guix/channels.scm), which feels more natural to me.
Cheers,
Lars
--
Lars-Dominik Braun
Wissenschaftlicher Mitarbeiter/Research Associate
www.leibniz-psychology.org
ZPID - Leibniz-Institut für Psychologie /
ZPID - Leibniz Institute for Psychology
Universitätsring 15
D-54296 Trier - Germany
Tel.: +49–651–201-4964
From d5dd0da8976211a0d0b77663ae8f8f945e92a7a1 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <ldb@leibniz-psychology.org>
Date: Fri, 27 Nov 2020 09:32:41 +0100
Subject: [PATCH 1/2] services: unattended-upgrade: Add 'search-paths' field.
* gnu/services/admin.scm (<unattended-upgrade-configuration>)[search-paths]:
New field.
(unattended-upgrade-mcron-jobs): Honor it.
* doc/guix.texi (Unattended Upgrades): Document it.
---
doc/guix.texi | 4 ++++
gnu/services/admin.scm | 18 +++++++++++++-----
2 files changed, 17 insertions(+), 5 deletions(-)
Toggle diff (60 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 32b91272cf..7f42fe8867 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17063,6 +17063,10 @@ 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{search-paths} (default: @code{'()})
+This list specifies the extra search paths used. By default, no search paths
+are added.
+
@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.
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index b34b990f32..87cf76c57f 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -205,6 +205,8 @@ Old log files are removed or compressed according to the configuration.")
(default "30 01 * * 0"))
(channels unattended-upgrade-configuration-channels
(default #~%default-channels))
+ (search-paths unattended-upgrade-configuration-search-paths
+ (default '()))
(services-to-restart unattended-upgrade-configuration-services-to-restart
(default '(mcron)))
(system-expiration unattended-upgrade-system-expiration
@@ -219,8 +221,8 @@ Old log files are removed or compressed according to the configuration.")
(define (unattended-upgrade-mcron-jobs config)
(define channels
- (scheme-file "channels.scm"
- (unattended-upgrade-configuration-channels config)))
+ (let ((c (unattended-upgrade-configuration-channels config)))
+ (if c (scheme-file "channels.scm" c) #f)))
(define log
(unattended-upgrade-configuration-log-file config))
@@ -271,9 +273,15 @@ Old log files are removed or compressed according to the configuration.")
(format #t "~a starting upgrade...~%" (timestamp))
(guard (c ((invoke-error? c)
(report-invoke-error c)))
- (invoke #$(file-append guix "/bin/guix")
- "time-machine" "-C" #$channels
- "--" "system" "reconfigure" #$config-file)
+ (let* ((channel #$(if channels #~(list "-C" #$channels) (quote '())))
+ (search-paths (quote #$(unattended-upgrade-configuration-search-paths config)))
+ (search-path-args (apply append (map (lambda (x) (list "-L" x)) search-paths)))
+ (command (append (list #$(file-append guix "/bin/guix") "time-machine")
+ channel
+ (list "--" "system" "reconfigure")
+ search-path-args
+ (list #$config-file))))
+ (apply invoke command))
;; 'guix system delete-generations' fails when there's no
;; matching generation. Thus, catch 'invoke-error?'.
--
2.25.1
From b425b012533de4a460cf22a14a4fcfbed78c0c2b Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <ldb@leibniz-psychology.org>
Date: Fri, 27 Nov 2020 09:42:11 +0100
Subject: [PATCH 2/2] services: unattended-upgrade: Change default for
'channels' field.
* gnu/services/admin.scm (<unattended-upgrade-configuration>)[channels]:
Default to #f.
* doc/guix.texi (Unattended Upgrades): Document it.
---
doc/guix.texi | 5 ++---
gnu/services/admin.scm | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
Toggle diff (32 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 7f42fe8867..5168d7d840 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17058,10 +17058,9 @@ This is the schedule of upgrades, expressed as a gexp containing an
mcron job schedule (@pxref{Guile Syntax, mcron job specifications,,
mcron, GNU@tie{}mcron}).
-@item @code{channels} (default: @code{#~%default-channels})
+@item @code{channels} (default: @code{#f})
This gexp specifies the channels to use for the upgrade
-(@pxref{Channels}). By default, the tip of the official @code{guix}
-channel is used.
+(@pxref{Channels}). By default, the system’s default is used.
@item @code{search-paths} (default: @code{'()})
This list specifies the extra search paths used. By default, no search paths
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 87cf76c57f..a1c4abd3e2 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -204,7 +204,7 @@ Old log files are removed or compressed according to the configuration.")
(schedule unattended-upgrade-configuration-schedule
(default "30 01 * * 0"))
(channels unattended-upgrade-configuration-channels
- (default #~%default-channels))
+ (default #f))
(search-paths unattended-upgrade-configuration-search-paths
(default '()))
(services-to-restart unattended-upgrade-configuration-services-to-restart
--
2.25.1
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEEyk+M9DfXR4/aBV/UQhN3ARo3hEYFAl/AvOUACgkQQhN3ARo3
hEbZmAwAtH/CF1SSg2K4qWunWdxpsErzh+qVcy+kulNVsS2HfLlTmWqYy4fhcTEM
JCeunyxaew/juEjtRsyQaj2muNlyrMtMkaDU/hK1cepcfHUx9VyM86Cc0hQC9kxu
gnTFIgGiFOLP09SiJsJAJe56wRdO1leYPzrFwG4Jgohn2MUxUgFbCDcD2O1wx7L5
OHkSfZfBocTMD6yUNMs13nVqy+bEJO47NHL4/J9rnwq4aXjd9rrtM1yOsCsW3/Vx
ghLmQG9Sj81IOKfvB3PHexAj7Ldp5OuLAcL/yz9BIINTXviJtVf3ieQ+BasPWmvu
yUUJp6CYtFAAVwMNQOlNg5a0IU/unJEeLtupuqSBeMhxEBMHgtafsa4YWzqnjNA7
EqqmtbC6n/Y3FudQiYNWVT8rpxV8bzfc2IjPVWeY/yXhCtYOrnFBovQcuPZ81vdZ
lau9GAx7AvC7fIAsR0NxZJKG2Kb8Q8ZrqjPOQ2lXl81XyeZO6PVI2wQej9uJ3hbe
HeMoxZpb
=qJ/n
-----END PGP SIGNATURE-----