system: Support the addition of old entries in the GRUB menu.
* gnu/system.scm (operating-system-grub.cfg): Add 'old-entries' parameter. Pass it to 'grub-configuration-file'. * gnu/system/grub.scm (grub-configuration-file): Add #:old-entries parameter. Honor it.
This commit is contained in:
		
							parent
							
								
									64e40dbb69
								
							
						
					
					
						commit
						fe6e3fe2a5
					
				
					 2 changed files with 18 additions and 6 deletions
				
			
		|  | @ -493,8 +493,9 @@ we're running in the final root." | |||
|                  (package-version kernel) | ||||
|                  " (technology preview)")) | ||||
| 
 | ||||
| (define (operating-system-grub.cfg os) | ||||
|   "Return the GRUB configuration file for OS." | ||||
| (define* (operating-system-grub.cfg os #:optional (old-entries '())) | ||||
|   "Return the GRUB configuration file for OS.  Use OLD-ENTRIES to populate the | ||||
| \"old entries\" menu." | ||||
|   (mlet* %store-monad | ||||
|       ((system      (operating-system-derivation os)) | ||||
|        (root-fs ->  (operating-system-root-file-system os)) | ||||
|  | @ -509,7 +510,8 @@ we're running in the final root." | |||
|                                   #~(string-append "--load=" #$system | ||||
|                                                    "/boot"))) | ||||
|                            (initrd #~(string-append #$system "/initrd")))))) | ||||
|     (grub-configuration-file (operating-system-bootloader os) entries))) | ||||
|     (grub-configuration-file (operating-system-bootloader os) entries | ||||
|                              #:old-entries old-entries))) | ||||
| 
 | ||||
| (define (operating-system-parameters-file os) | ||||
|   "Return a file that describes the boot parameters of OS.  The primary use of | ||||
|  |  | |||
|  | @ -63,9 +63,12 @@ | |||
|   (initrd          menu-entry-initrd))     ; file name of the initrd as a gexp | ||||
| 
 | ||||
| (define* (grub-configuration-file config entries | ||||
|                                   #:key (system (%current-system))) | ||||
|                                   #:key | ||||
|                                   (system (%current-system)) | ||||
|                                   (old-entries '())) | ||||
|   "Return the GRUB configuration file corresponding to CONFIG, a | ||||
| <grub-configuration> object." | ||||
| <grub-configuration> object.  OLD-ENTRIES is taken to be a list of menu | ||||
| entries corresponding to old generations of the system." | ||||
|   (define all-entries | ||||
|     (append entries (grub-configuration-menu-entries config))) | ||||
| 
 | ||||
|  | @ -93,7 +96,14 @@ search.file ~a/bzImage~%" | |||
|                           (($ <menu-entry> _ linux) | ||||
|                            linux)) | ||||
|                          all-entries)) | ||||
|           #$@(map entry->gexp all-entries)))) | ||||
|           #$@(map entry->gexp all-entries) | ||||
| 
 | ||||
|           #$@(if (pair? old-entries) | ||||
|                  #~((format port " | ||||
| submenu \"GNU system, old configurations...\" {~%") | ||||
|                     #$@(map entry->gexp old-entries) | ||||
|                     (format port "}~%")) | ||||
|                  #~())))) | ||||
| 
 | ||||
|   (gexp->derivation "grub.cfg" builder)) | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue