Being able to restore a your desktop on a new machine feels great, but it requires a lot of working with backing up different folders, creating symlinks and ansible playbooks. It might be worth considering a pop_os specific backup and restore function if it can greatly simplify this process.
We could start with the basics. It would be great if all settings and configuration was stored in the .config folder. Many users already have this folder stored in git, which makes it readily accessible and easy to backup and it would make it consistent with the .config specification.
To enhance its functionality, we could add a file to the .config folder that records all the installed packages in the system, using a toml file for this purpose. This file would serve as a record of all ‘sudo apt install’ or ‘flatpak install’ commands. For example, if Firefox or Alacritty were installed, they would be added to the file. If they were removed, they would be taken out of the list. Any changes made to the packages, such as updates, would not affect this list. If a specific version number is mentioned during the install, it could be recorded; otherwise, the latest version would be assumed.
A command like ‘pop_restore packages’ could then be used to reinstall all the packages. This list could also be manually updated, although items would not be readded unless they were uninstalled and reinstalled. This process could replicate a significant portion of what Ansible accomplishes, perhaps about 95%.
Another suggestion, although less certain, is to store installed wallpapers and fonts in the .config folder and create symbolic links to the right locations during installation. Given that GitHub allows a few gigabytes, this seems feasible. We could potentially only backup wallpapers that have been in use for the last few weeks for a certain amount of time, thus only backing up the ones used regularly. This way, you’re only restoring the wallpapers you really like, and keeping the folder well under a GB.
While this may not be useful for the average user, it could be great for those familiar with the terminal.
Now to make this feature truly amazing. If you leave out images and fonts, we’re looking at pretty small file sizes, just a few megabytes at most. This could make it feasible to store it on your own servers. Users would just need to log in (or some other way to authenticate, like 5 random words etc) and click ‘restore’ in a GUI to get their desktop back. And since its only settings and packages, you dont have to worry about storing sensitive information.
In my opinion, implementing this feature could be a major improvement to Pop_OS, providing a convenient solution for both users comfortable with the terminal and those who prefer a more straightforward approach.
This sounds a lot like Nix. There you usually have a master config file (nix.conf) that the package manager (nix) reads and if necessary acts upon. That config file can contain a description of any package and any config for that package even something ‘trivial’ like desktop background pictures.
Nix is so powerful that as long as you have that config file you can reproduce anything that’s described in there exactly on any maschine.
I really like this idea, I think it would significantly contribute to making it a more cohesive system for less technical users.
Hang in there, I think you’re going to be happy with the new Pop-core image.