gnu: guix-configuration: Improve offload build-machines.
It’s currently difficult to programmatically add a build-machine, because the
`service-extension' mechanism is the only facility which can do that.  It
relies on the `guix-service-type', ala:
    (service-extension guix-service-type
      (guix-extension (build-machines (list ...))))
...but `guix-service-type' is already instantiated as part of
`%base-services', and replacing it may lose other configuration, like
substitute servers and authorized keys.
Additionally, a default value of `#f' for the build-machines field requires
guarding uses of the field with:
    (or (guix-build-machines config) '())
Changing the default to be the empty list avoids that.  One can now add
build-machines with code such as:
    (modify-services %base-services
      (guix-service-type
       config =>
       (guix-configuration
        (inherit config)
        (authorized-keys
         (cons %build-machine-key
               (guix-configuration-authorized-keys config)))
        (build-machines (cons #~(build-machine ...)
                              (guix-configuration-build-machines config))))))
* gnu/services/base.scm (guix-configuration): Rename `guix-build-machines' to
`guix-configuration-build-machines' and export it.  Change the default from
`#f' to the empty list.
* gnu/services/base.scm (guix-activation): Update the build-machines test and
reverse the conditions.
Change-Id: I6780c6a5579fd9d4b4f22ee2b2bf7ba7a0454407
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
			
			
This commit is contained in:
		
							parent
							
								
									dde37247fa
								
							
						
					
					
						commit
						ef8ab6ab66
					
				
					 1 changed files with 8 additions and 7 deletions
				
			
		|  | @ -212,6 +212,7 @@ | |||
|             guix-configuration-guix | ||||
|             guix-configuration-build-group | ||||
|             guix-configuration-build-accounts | ||||
|             guix-configuration-build-machines | ||||
|             guix-configuration-authorize-key? | ||||
|             guix-configuration-authorized-keys | ||||
|             guix-configuration-use-substitutes? | ||||
|  | @ -1848,8 +1849,8 @@ archive' public keys, with GUIX." | |||
|                     (default #f)) | ||||
|   (tmpdir           guix-tmpdir                   ;string | #f | ||||
|                     (default #f)) | ||||
|   (build-machines   guix-build-machines           ;list of gexps | #f | ||||
|                     (default #f)) | ||||
|   (build-machines   guix-configuration-build-machines ;list of gexps | '() | ||||
|                     (default '())) | ||||
|   (environment      guix-configuration-environment  ;list of strings | ||||
|                     (default '()))) | ||||
| 
 | ||||
|  | @ -2044,10 +2045,10 @@ proxy of 'guix-daemon'...~%") | |||
|         #$(and channels (install-channels-file channels)) | ||||
| 
 | ||||
|         ;; ... and /etc/guix/machines.scm. | ||||
|         #$(if (guix-build-machines config) | ||||
|         #$(if (null? (guix-configuration-build-machines config)) | ||||
|               #~#f | ||||
|               (guix-machines-files-installation | ||||
|                #~(list #$@(guix-build-machines config))) | ||||
|               #~#f)))) | ||||
|                #~(list #$@(guix-configuration-build-machines config))))))) | ||||
| 
 | ||||
| (define-record-type* <guix-extension> | ||||
|   guix-extension make-guix-extension | ||||
|  | @ -2093,9 +2094,9 @@ proxy of 'guix-daemon'...~%") | |||
|               (substitute-urls (append (guix-extension-substitute-urls extension) | ||||
|                                        (guix-configuration-substitute-urls config))) | ||||
|               (build-machines | ||||
|                (and (or (guix-build-machines config) | ||||
|                (and (or (guix-configuration-build-machines config) | ||||
|                         (pair? (guix-extension-build-machines extension))) | ||||
|                     (append (or (guix-build-machines config) '()) | ||||
|                     (append (guix-configuration-build-machines config) | ||||
|                             (guix-extension-build-machines extension)))) | ||||
|               (chroot-directories | ||||
|                (append (guix-extension-chroot-directories extension) | ||||
|  |  | |||
		Reference in a new issue