summaryrefslogtreecommitdiff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-07-28 22:36:20 +0200
committerLudovic Courtès <ludo@gnu.org>2020-07-29 00:22:01 +0200
commit12a3d7d6f747b2b3c456ba20727e1ac97f9a952f (patch)
treee6602f8283267c668a6cea3b39750d7533b0825c /gnu/system.scm
parent5c622a0a680ca69f8c1f3ce23dabdd93e774a56f (diff)
system: 'operating-system-with-provenance' uses the OS location info.
This allows 'guix deploy' to save the config file when it's available. * gnu/system.scm (operating-system-configuration-file): New procedure. (operating-system-with-provenance): 'config-file' defaults to the value returned by 'operating-system-configuration-file'.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index c8ef641695..5dd2f7f680 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -651,7 +651,20 @@ bookkeeping."
gc-root-service-type roots)
(operating-system-user-services os)))))
-(define* (operating-system-with-provenance os #:optional config-file)
+(define (operating-system-configuration-file os)
+ "Return the configuration file of OS, based on its 'location' field, or #f
+if it could not be determined."
+ (let ((file (and=> (operating-system-location os)
+ location-file)))
+ (and file
+ (or (and (string-prefix? "/" file) file)
+ (search-path %load-path file)))))
+
+(define* (operating-system-with-provenance os
+ #:optional
+ (config-file
+ (operating-system-configuration-file
+ os)))
"Return a variant of OS that stores its own provenance information,
including CONFIG-FILE, if available. This is achieved by adding an instance
of PROVENANCE-SERVICE-TYPE to its services."