| For me it was "easy" on Linux. But you need to commit to it, no pun intended. I moved from Ubuntu to OpenSUSE Tumbleweed with almost no downtime. Only two things I had to change IIRC was to create the same group as Ubuntu with GID 1000 (100 on TW) and to find out the different package names because ubuntu is a mess. The process that lead me to my current setup - Install OS fresh (always using the same username because there are many cases where you can't eval or access env's) - Ignore most of the $XDG folders except Desktop and
Downloads. - Have a centralized root folder and a scripts folder inside of it. All my scripts start with a check to see if the root is correct by checking an ENV - Start a repo bare = false, worktree = /home/user, and use git add + excludesFile. I've tried everything there is and this is the best option by far because it's way faster, you have to be explicit about what's in your vcs. On VCS GUI .desktop I have added MimeType=inode/directory; so it's aware of the root. - All my dotfiles are there but I use KDE and I added all the config files I care about so I can see what changes on updates, it helped me debug problems on update more than once. - Don't customize the OS manually in any way (unless the GUI writes to a config file), create a script and only make changes through it. That includes what you install, what you remove, config changes, daemons, EVERYTHING. - I prefer programs that are configurable by config/plain text files. It's "reproducible", you have a script that describes your OS. Personally use flatpak for everything that isn't on TW's repos and docker/podman for local development. Now some examples of things in my script that also show some statistics after I run it. There's also a "first run" set of functions that I only run when it's a clean install. sudo zypper install "${LIST_OF_PROGRAMS_TO_INSTALL[@]}"
sudo zypper remove --clean-deps "${LIST_OF_PROGRAMS_TO_REMOVE[@]}"
sudo zypper addlock "${LIST_OF_PROGRAMS_TO_REMOVE[@]}" sudo systemctl enable "SVC"
sudo usermod -a -G "SVC" $(whoami)
sudo firewall-cmd --permanent --zone=ZONE --add-source=SRC flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.freedesktop.Platform//18.08 org.freedesktop.Sdk//18.08
flatpak install --user --noninteractive "APP"
flatpak update -y And things like enforcing correcting permissions for .ssh, .gnupg. Set up mounts and shares. My root partition is btrfs, home is xfs. But I keep a tab on it with sudo btrfs filesystem usage /. I have tested a lot of tools and in the end there's no replacement to discipline (it becomes second nature) and using a script instead of relying on 3rd party tools for config/provisioning. |