Hi everyone,
I’ve been a happy user of Fedora Workstation since Fedora 36 on my Surface Go 1.
I really enjoy Gnome and everything is set up the way I want to.
Since I was really happy with my setup I just wanted to be able to replicate it easily through Clonezilla so that I could port it on any future computer I’d get.
Sadly, even with the help of really helpful and knowledgeable users on Lemmy, it hasn’t worked (https://sh.itjust.works/post/25963065).
So now I’m left wondering if there could be a distribution that I’d enjoy and which would be easy to deploy on another computer as I’d hate to have to configure everything on every computer I’d get.
I love Gnome but I wouldn’t be against trying something else if necessary.
What distribution could meet my needs?
NixOS. A big learning curve but replicable.
replicable.
As someone who spent time in OS Build/Relmgmt before security, I have a pressing desire to play the “how do you know” game, here.
I’d jump on the bandwagon of nixos, I use it myself and love it, does exactly what you’re asking for
However judging on some of your other comments it might be a better idea to just suck up having to manually rebuild until you understand the basics of Linux a little better
(nixos more or less requires you understand programming syntax for writing your system config)
(nixos more or less requires you understand programming syntax for writing your system config)
It’s technically not a real programming language but an expression language. The difference is that the former is a series of commands to execute in the specified order to produce arbitrary effects while the latter is a declaration of a set of data. You can think of it like writing a config file i.e. in JSON format.
The syntax isn’t really the hard part here. You can learn the basics that comprise 99% of Nix code in a few minutes.
The actually hard part is first figuring out what you even want to do and then second how the NixOS-specific interface for that thing is intended to be used. The former requires general Linux experience and the latter research and problem solving skills.
It’s hard to say whether it’s difficult or not coming into it already knowing how to program
More people than not struggle to come to terms with what a variable is let alone all the stuff you can do in nix
There are definitely other hard parts, but I didn’t want to write a wall of text lol
For reproducibility, nothing really beats NixOS. That’s not really what you’re asking for, as that would not involve Clonezilla.
If you’re frequently switching hardware, and want to have everything up and running, configured to your liking, in minutes, you’re gonna have fun with NixOS in the long term. But I’m not gonna sugarcoat it, it has a steep learning curve and does require you to enjoy some tinkering. Worth it, imo
Otherwise, just pick a distro that you enjoy and create a separate home partition, when it’s time to switch you do a fresh install and clone only the home partition. That’ll get you 90% of the way to have your old setup on the new device
But what is a home partition?
I mean for me the problem is backing up my settings (including for every app) and I don’t know where they are saved.
Backing up my pictures, documents and others isn’t a problem.
Your settings for the most part are in your home directory, generally when you install a Linux system everything that isn’t the bootloader is on one partition (system, installed applications, etc)
Your home directory is for anything specific to your user, meaning your downloads folder, your pictures, documents and also your .config folder which holds 90% of the config files
There are some weird ones that have directories outside of home, afaik that’s stuff like network manager remembering your saved networks that runs outside of your user context
I’m going to mention Ansible
as I haven’t seen it mentioned, and it can be used to locally manage a reproducible build.
It has already been mentioned, but as a minimum to replicate your system you need two things:
- Transfer/copy your entire
/home
directory as there is where the majority of the configuration files of your system pertaining the software you use (there could be configs you could need on/etc
and on/usr/local
or other dir), that is why it is recommended to partition your disk on installation of your distro, so the/home
directory is already separated, as if you reinstall in the same machine you don’t lose any configuration in addition to your personal documents/pictures/etc - Have a way to automatically install a list of programs/apps/drivers/libraries, and that is what something like a bash script, Ansible, nixOs, etc. could help you with.
The truth is that using any of the tools in the second point requires learning a bunch, so if your skill level is still not there, there is some work to do to get there.
I’m going to mention Ansible
Oh for the love of god, don’t. Ansible is 2002 technology used in 2024. It’s so clunky and janky that I’m relieved I can get chatgpt to boilerplate my stuff and save me time actually staring at fucking YAML all day. Use Anything Else before your brain rots.
source: it’s like half my day job now and I should’ve charged more.
Personally, I use Fedora Silverblue and use bash scripts for reproducibility. To set up a new system, all I need to to is install, reboot, run my bash script, reboot, and my system is 90% configured. With bash scripts, I am able to reproduce more of my system than I could when I used NixOS.
A lot of people recommend Nix, but the thing about Nix is that you’re only declaring how the system is configured. Not your home folder. You need to rely on third party tools for that.
Bash scripts can configure system and home folder. They can also be used on any distro, whereas a Nix configuration file only works on NixOS.
Though the worst part about any new install is just signing back into everything, especially an annoyance when you have proper 2FA setup. Bash scripts or Nix can’t solve that unless you migrate data over.
What is a bash script? Is it something I’d have to write mysel using the terminal? Sorry but my skills are quite limited for now.
Yes, it’s something you write yourself. Bash is the language you use when you use the terminal. A bash script is just many lines of bash commands.
A bash script could be as simple as
dnf install package1 package2 package3
dnf remove package4 package5 package6
This script automates installing some packages and removing some packages. The bash script I use does a lot more, such as running commands to configure Gnome how I like it.
If you’re not comfortable with the terminal, I would definitely recommend staying away from NixOS. To declaratively/reproducibly set up the system, it uses a language called Nix that is a fair bit more complicated than bash. It’s also just very different from traditional Linux systems like Fedora or Ubuntu.
What is a bash script?
At this point in time, I need to stop you.
There’s a massively-increased risk of you being misled by someone else’s agenda without knowing it’s not the simplest and most effective solution to your problem because there’s a lot of technical stuff you may not know and can’t pick from available options based on their nuances. So:
- find a real person you trust who knows this
- ask them
Whatever they tell you, they’ll be able to support. Ensure you’re the one typing so you learn things, and ask every question you think of all the time.
Stop asking random strangers which solution is best, because you’re going to get a lot of short-sighted clique answers that DO NOT HELP YOU.