On Mon, 2019-08-05 at 12:05 -0400, Jakob L. Kreuze wrote: > ... > > I don't think this should be _too_ hard to fix. To me, parsing the > installed Grub configuration to get existing menu entries seems like > a > logical step forward. > > Thoughts from anyone else? > > Regards, > Jakob
Alternatively, we could save in the store a derivation for the the grub config generated from the bootloader of the configuration. When the user calls "guix system delete-generations", the derivation can be run, and the remaining system generations (if any) can be appended in a menu like when the user calls "guix system reconfigure". (Although it does not work for me right now, I'm assuming "guix system delete-generations 2m" as described in the manual will be implemented in the future.) The immediate downsides I see to my solution: - It would take space in the store per generation, which can add up if the user does not often call "guix system delete-generations" and calls "guix system reconfigure" on a healthy basis. The user could just be reminded to call "guix system delete-generations" occasionally, and any official service that automatically updates the system via "guix system reconfigure" can (and considering how large a generation with a lot of updated system packages can get, probably should) also be configured to call "guix system delete-generations". - If someone hand-edits the grub config the changes would be lost. This is the case as it is right now, and grub options can be edited in the configuration, so I'm not too concerned about this. -It would be much simpler to identify menu entries generated by guix that are no longer in the store and remove them, and remove all empty submenus. Parsing would make hand-editing grub.cfg more dangerous than a solution that simply scraps the hand-made changes and rebuilds as I propose, because the user doing the hand-editing would not necessarily be aware what patterns the parser checks. It would also be inconsitent: edits to grub.cfg being scrapped when "guix system reconfigure" is called, but not when 'guix system delete-generations" is called looks to me like a good way to introduce a bug to the more adventurous "Murphy's Law"-type users down the road. These are just my thoughts. I would love to hear other downsides to my solution. -- -Jesse