Hi Richard, On 6/27/24 05:56, Richard Sent wrote: > I'll take a look at it and see what the code looks like. It might be a > bit of effort to get that working cleanly while avoiding code dupe. For > instance, setting RESTIC_PASSWORD(_COMMAND) in both init and backup > program actions. Yes, 100% agree. What I would do is (and probably there is a better way): - rename restic-backup-job-program to restic-action-job-program or something similar. the procedure would be the same but it would take two additional arguments: an action-name argument or similar that would replace all instances of "backup" and I think this new procedure should not access the files field of the job record but it instead it would take an action-arguments argument which would replace #$@files with #$@action-arguments in the execlp call. This way, I hope, it could be general enough to support additional actions besides init in the future, such as purge or restore. - create a new restic-backup-job-program and a restic-init-job-program or similar procedures that would call the new generic restic-action-job-program - inside the restic-guix procedure I'd rename the programs list to backup-programs and I would create a similar list for the init action with #f placeholders for jobs that do not require initializing, and I would check the conditional inside the backup procedure something like: (define (get-program name programs) [...]) (define (init args) [...]) (define (backup args) (define name (third args)) (define backup-program (get-program name backup-programs)) (define init-program (get-program name init-programs)) (when init-program (init args)) (execlp backup-program backup-program)) this requires the init action not to exec the script resulting from the gexp but I can't think of a reason why it could be problematic right now so I guess it is ok. Please take all of the above as a proposal there are for sure things to make better. > Thanks for the feedback! Thank you very much for your work, giacomo