Hi, In my local Guix git repo, I've made the attached change on top of commit 7972d8a2e98af6592050a37036c2c80a01358fcf. I was surprised to find that when I built it and ran './pre-inst-env guix system list-generations', the following error occurred: --8<---------------cut here---------------start------------->8--- Backtrace: In ice-9/boot-9.scm: 157: 19 [catch system-error ...] In guix/scripts/system.scm: 884: 18 [#] 818: 17 [process-command list-generations () ...] In guix/store.scm: 1182: 16 [run-with-store # ...] In guix/scripts/system.scm: 819: 15 [# #] In guix/packages.scm: 1092: 14 [# #] 734: 13 [cache! # # # ...] 1038: 12 [thunk] 970: 11 [bag->derivation # # #] In srfi/srfi-1.scm: 578: 10 [map # #] In guix/packages.scm: 794: 9 [expand-input # # # ...] In guix/store.scm: 1182: 8 [run-with-store # ...] In guix/packages.scm: 1140: 7 [# #] In guix/download.scm: 326: 6 [# #] In guix/store.scm: 1105: 5 [# #] In guix/packages.scm: 734: 4 [cache! # # # ...] 1038: 3 [thunk] In gnu/packages/bootstrap.scm: 191: 2 [raw-build # "guile-bootstrap-2.0" ...] In gnu/packages.scm: 91: 1 [search-bootstrap-binary "tar" #] In unknown file: ?: 0 [string-append # "/" "tar"] ERROR: In procedure string-append: ERROR: In procedure string-append: Wrong type (expecting string): # --8<---------------cut here---------------end--------------->8--- I don't have much experience (yet!) debugging Guile programs, so I haven't been able to understand the cause of the issue despite my attempts. Can anyone help me understand the problem, or provide tips on how to debug this more effectively? The motivation for this refactoring is as follows. I want to eventually add procedures 'roll-back-system' and 'switch-to-system-generation', which respectively roll the system back to a previous generation, and switch to an existing generation. These new procedures will require access to the store (e.g., to regenerate grub.cfg). I must invoke those procedures somewhere in (guix scripts system), and the obvious place to do that is inside the 'process-action' procedure. However, that procedure is written with the assumption that the action requires an operating system configuration file. My two new procedures don't require that. So, instead, I thought it would be easiest to pull the store monad setup logic (the 'with-store' stuff) up one level into the procedure 'process-command' and call my two new procedures inside the 'process-command' procedure. It looked to me like there was nothing specific about the store monad setup logic that required it to exist in the 'process-action' procedure, so I thought this refactoring would be simple and clean. I was apparently wrong, but I can't see why. This is the last thing blocking me from submitting patches to the email list which add system roll-back and switch-generation commands to GuixSD. I have a series of commits on a branch in my Guix git repo which implement system-rollback and switch-generation. If you'd like to see them for more context, please let me know and I'll provide them, too. Thank you! -- Chris