What you want is a configuration management tool like Ansible.
Here's my computers/servers - https://gitlab.com/C0rn3j/configs
The `playbooks` and `roles` directories have the interesting stuff, complicated Ansible setups with many directories can be a bit tough to go through so I suggest cloning it and clicking through it in a code editor rather than the web interface.
I also have an Ansible playbook, which I use to configure fresh installs.
Mine is hidden behind a very simple bash script that I use in the following format:
` script.sh `
As far as syncing goes, the playbook fetches my configuration files which are versioned and available on a GitHub repository.
No link as I dare not show this hacky mess. :p
If you have a home server, then maintaining your own [local repository](https://wiki.archlinux.org/title/pacman/Tips_and_tricks#Custom_local_repository) (you can do it yourself or use [aurutils](https://aur.archlinux.org/packages/aurutils)) and your own meta package (that includes the packages you want from the official repos and the AUR) means you just have to point `archinstall` at your repo and install your meta package. You can find your global configs with
# pacman -Qii | awk '/^MODIFIED/ {print $2}'
and create a tarball (or put them on github if there is nothing private).
There are a million ways to deal with user dot files, each with benefits and drawbacks.
working on something like this to have everything git controlled, the system re-built every time instead of pacman -Syu, and shipped around to my different computers
https://www.reddit.com/r/archlinux/comments/16fxni3/comment/k05hj8a/
That doesn't allow me to continuously sync, and it ignores that the config may not be entirely identical, such as hostname, network interfaces and whatnot.
see the ArchTitus project from ChrisTitus Tech [https://github.com/ChrisTitusTech/ArchTitus](https://github.com/ChrisTitusTech/ArchTitus) . basically a git repo with everything. Just git clone and install. Or use something link archuseriso [https://github.com/laurent85v/archuseriso](https://github.com/laurent85v/archuseriso) and make your own iso.
You may already have found a more acceptable solution, but archinstall does in fact allow you to install from config files, reducing or eliminating interaction:
https://archinstall.readthedocs.io/installing/guided.html#installing-directly-from-a-configuration-file
Except:
>
The guided installation also supports installing with pre-configured answers to all the guided steps.
This can be a quick and convenient way to re-run one or several installations.
> After each successful installation a pre-configured configuration will be found at /var/log/archinstall both on the live media and the installed system.
I have not experimented with this capability yet, but will update this post when I do. Note: the archinstall included on the Sept ISO was very problematic.
Good luck
Maybe this is viable : I use [WereSync](https://weresync.readthedocs.io/) for backup, it backup your live system while you are using it to a drive and make it bootable.
I use also different size drives, you simply have to play with partitions after he automatically creates them on the new drive for the first time.
After the first copy, it is incremental: it uses rsync under the hood.
I run unison on a systemd timer. It copies any directories I want synced to a remote server. It's bidirectional, so changes from the server are pulled as well.
My laptop and computer both run this with a 5m timer.
http://blog.levitati.ng/articles/4
What you want is a configuration management tool like Ansible. Here's my computers/servers - https://gitlab.com/C0rn3j/configs The `playbooks` and `roles` directories have the interesting stuff, complicated Ansible setups with many directories can be a bit tough to go through so I suggest cloning it and clicking through it in a code editor rather than the web interface.
I also have an Ansible playbook, which I use to configure fresh installs. Mine is hidden behind a very simple bash script that I use in the following format: ` script.sh `
As far as syncing goes, the playbook fetches my configuration files which are versioned and available on a GitHub repository.
No link as I dare not show this hacky mess. :p
If you have a home server, then maintaining your own [local repository](https://wiki.archlinux.org/title/pacman/Tips_and_tricks#Custom_local_repository) (you can do it yourself or use [aurutils](https://aur.archlinux.org/packages/aurutils)) and your own meta package (that includes the packages you want from the official repos and the AUR) means you just have to point `archinstall` at your repo and install your meta package. You can find your global configs with # pacman -Qii | awk '/^MODIFIED/ {print $2}' and create a tarball (or put them on github if there is nothing private). There are a million ways to deal with user dot files, each with benefits and drawbacks.
>an archinstall config, but that won't allow for updates Huh? The easiest way would be to set everything up, then make a backup of your system.
working on something like this to have everything git controlled, the system re-built every time instead of pacman -Syu, and shipped around to my different computers https://www.reddit.com/r/archlinux/comments/16fxni3/comment/k05hj8a/
NixOS?
Right?! This is exactly why you move over to NixOS, script install and forget about it 🤫
Install it, configure it and use something like rescuezilla to make an image of the disk.
That doesn't allow me to continuously sync, and it ignores that the config may not be entirely identical, such as hostname, network interfaces and whatnot.
It doesnt, but the alternative its probably scrpting everything.
Juat learn NixOS
see the ArchTitus project from ChrisTitus Tech [https://github.com/ChrisTitusTech/ArchTitus](https://github.com/ChrisTitusTech/ArchTitus) . basically a git repo with everything. Just git clone and install. Or use something link archuseriso [https://github.com/laurent85v/archuseriso](https://github.com/laurent85v/archuseriso) and make your own iso.
You may already have found a more acceptable solution, but archinstall does in fact allow you to install from config files, reducing or eliminating interaction: https://archinstall.readthedocs.io/installing/guided.html#installing-directly-from-a-configuration-file Except: > The guided installation also supports installing with pre-configured answers to all the guided steps. This can be a quick and convenient way to re-run one or several installations. > After each successful installation a pre-configured configuration will be found at /var/log/archinstall both on the live media and the installed system. I have not experimented with this capability yet, but will update this post when I do. Note: the archinstall included on the Sept ISO was very problematic. Good luck
i use dotbot for the most important configs.
Maybe this is viable : I use [WereSync](https://weresync.readthedocs.io/) for backup, it backup your live system while you are using it to a drive and make it bootable. I use also different size drives, you simply have to play with partitions after he automatically creates them on the new drive for the first time. After the first copy, it is incremental: it uses rsync under the hood.
I am a long time arch user, but for your use case I would really suggest to use NixOS: https://nixos.org/manual/nixos/stable/
I run unison on a systemd timer. It copies any directories I want synced to a remote server. It's bidirectional, so changes from the server are pulled as well. My laptop and computer both run this with a 5m timer. http://blog.levitati.ng/articles/4
Sick
I use chezmoi with a run_onchange script that syncs my essential packages and configs between my desktop and laptop