Nix solves the issue of reproducible builds and it can also be used to set up a fresh machine, but if I want to carry over all my data and sync them, I will need to install other tools (e.g., syncthing, rclone, etc.).

The Nix store can hold any kinds of data (see NixOS discourse thread What are interesting, unique, and/or non-standard uses of Nix?), so why not user data (i.e., state)?

Was thinking along the lines of event sourcing over an “immutable” store, the Nix store; using quotes because it is not truly immutable, otherwise one couldn’t do garbage collection (which comes in handy because one also wouldn’t keep all state changes to their data anyway). Event sourcing uses projections to show the model of the accumulated events (to put it in a sloppy way) so in this case (i.e., Nix store with data snippets/events), the latest/main projection would always be total sum of all data “shards” in the Nix store.