home-manager: add backup overwrite option #7887
                
     Merged
            
            
          
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Description
Closes #4199.
When using the
backupFileExtensionoption, if the backup file exists, the activation process fails. This adds an opt in option to instead overwrite the old backup instead of failing.This feature is highly requested, the issue above is the 6th most liked issue on the tracker.
I have not added a help text mentioning this option on collision to be conservative. This setting removes data, so I don't think suggesting it for any collision is responsible.
There was a previous attempt at implementing this here #4971 but the contributor gave up due to opposition to overwriting data. Since then Hjem (A minimal home-manager alternative) has implemented a very similar feature https://hjem.feel-co.org/options.html#option-hjem-clobberByDefault.
With Hjem setting the precedent, and it being one of the most requested features (judging by reactions) I hope this change can receive more favorable second look.
Checklist
Change is backwards compatible.
Code formatted with
nix fmtornix-shell -p treefmt nixfmt deadnix keep-sorted --run treefmt.Code tested through
nix run .#tests -- test-allornix-shell --pure tests -A run.all.(It was taking too long due to my slow connection)
Test cases updated/added. See example.
Commit messages are formatted like
See CONTRIBUTING for more information and recent commit messages for examples.
If this PR adds a new module
If this PR adds an exciting new feature or contains a breaking change.