tmpfiles: RFC42-style rules and option to purge targets on change #8092
+357
−45
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
This PR accomplishes two things:
Replace the string-based
systemd.user.tmpfiles.rulesoption by an RFC42-stylesystemd.user.tmpfiles.settingsoption.Add an
systemd.user.tmpfiles.settings.<config-name>.purgeOnChangeoption to purge the targets of rules on change.An example use case of this feature is the
programs.glabmodule: It utilizes tmpfiles to set non-default permissions for its config file. With this PR, the module would be able to reliably remove the config file when it is empty or the module disabled.The overall structure of the new option (including its defaults) is
It resembles NixOS'
systemd.tmpfiles.settingsoption; the only difference is the inserted{ rules = ...; purgeOnChange = ...; }submodule to configure purging.The reason I packed both changes in the same PR is to minimize backwards incompatibilities.
This PR is an advancement of #8084.
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.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.