I am curious what people’s recommended workflows for getting started on a new machine are, installing all the software and drivers you normally use. I am mostly interested in Linux but I am curious if better workflows exist in Windows or Mac. Do you have a fancy setup script? Do you have a custom distro? Do you use a virtual machine or container-ish hack? Do you clone your system somehow? Any tools you recommend?
I use Ubuntu. I just install the new system, copy over my home directory (
rsync -avP or something like that), and then
apt install whatever I find is missing.
Last time I installed a new machine I put all partitions but
/boot on ZFS, should make the above even easier next time.
I am assuming that the machine is a desktop/laptop. For a server, I would do a more careful migration of
/etc, and other relevant directories. But on a laptop, I pretty much never customize anything there, and just keep a backup in case I need to grep it for some stuff. In fact, I am happy to lose the cruft that accumulates in directories for each new install.
I don’t think that containers make much sense for a laptop/desktop, but these days they have almost zero overhead anyway so why not. I have a colleague who runs Ubuntu on a MacBook Pro within a container (he likes the hardware).
I use Arch Linux.
I re-create my user (that ends up having the same UID and GID because is the first user created). I copy the home from the old machine (preserving permissions). I execute a
pacman command in the old machine to check all packages I explicitly installed and install the same in the new machine (or a subset of them, if I perceive many of them are not necessary anymore).
Arch Linux installation process is kinda of manual, but I like it this way. I often end up improving my installation one extra step towards my ideal. One day I will test that disk encryption thingies.
I use Debian.
I just install the new system, making use of the
tasksel step in the end to install the recommended packages for a desktop system.
I have a gitted shell-script helping re-install all other packages that I need, along the lines of:
# Base utilities
apt install -y emacs git
apt install -y htop tree gparted
apt install -y rsnapshot
# Desktop environment
apt install -y awesome kitty i3lock kupfer lxpolkit
(This list of packages is not kept updated each time I install a package. Instead, before using this script on a new system, I try and make sure it is as up-to-date as possible by looking for
apt install commands in the
/root/.bash_history files of other machines.)
I then create my user and populate the (initially empty) home directory with
- config files coming from a few git repos;
- possibly other files and documents coming from my back-up system.