Tools like clonezilla are designed to do that but are not intuitive and in my experience they were unreliable. An if you changed drives I imagine your restored backup by this method would not boot as the UUID would have changed for root. (This method negates installing the os, it backs up and restores everything, when it actually works).
The difference in what is backed up flatpak wise for your method could be flatpaks installed system wide vs ones installed specifically for that user. Packages installed from the Solus repo would not be restored at all (Like Discover).
I backup my personal files, install Solus, restore backup and run this script. It is the most reliable method.
#!/usr/bin/env bash
FIRST="FirstName"
LAST="LastName"
EMAIL="me@addr.com"
WORKDIR=$HOME
# Switch to unstable repository and update.
sudo eopkg ar Solus https://cdn.getsol.us/repo/unstable/eopkg-index.xml.xz
sudo eopkg up -y
# Install additional applications.
sudo eopkg it rmeta.eopkg
sudo eopkg it alacritty btop discord element filezilla fish ghostwriter heroic-games-launcher keepassxc kid3-cli kid3-qt lftp lutris mediainfo micro mkvtoolnix openssh-server opera-stable protontricks qownnotes restic ripgrep rssguard rsync sddm-wayland-experimental starship steam strawberry veracrypt virt-manager vivaldi-snapshot vivaldi-stable vscode zellij -y
# Install flatpaks.
flatpak install spotify
flatpak install net.davidotek.pupgui2
# Install and initialise build tools.
sudo eopkg it -c system.devel -y
sudo eopkg it git gum golang solbuild solbuild-config-unstable syslinux -y
sudo solbuild init
sudo solbuild init -p main-x86_64
sudo solbuild update
sudo solbuild update -p main-x86_64
# Setup git.
sudo cp gpg2-display-aware /usr/bin/gpg2-display-aware
sudo chmod 755 /usr/bin/gpg2-display-aware
git config --global user.name "$FIRST $LAST"
git config --global user.email $EMAIL
git config --global gpg.program "/usr/bin/gpg2-display-aware"
# Setup packaging directory
cd $WORKDIR
git clone git@github.com:getsolus/packages.git
cd ../
git clone git@github.com:getsolus/infrastructure-tooling.git
# Enable services.
sudo systemctl enable sshd --now
# Setup mount points.
sudo mkdir -p /mnt/{3TB,4TB,8TB}
sudo chmod -R 700 /mnt/*
# Switch shell to fish.
chsh -s /usr/bin/fish
source ~/.config/fish/config.fish
# Announce script has finished.
echo "Script has now finished."
Most of this will not be useful to you it is not intended to copy paste, just an idea of what you could write for your own specific user case. I especially do not recommend the switching to unstable part unless you know the risks and rules of doing so.