I'm looking for interesting tools to automate managing packaging and configuring everything automated.
And yeah I know about NixOS but I like to distro hop and experiment so I for now know these:
- Ansible - automating many machines, using different package names as vars and package managers.
- Bash - the most native and compatible scripting language that can be.
- Chezmoi - for dotfiles.
For now that's it. I'm looking forward for your suggestions!
Nix, the package manager, is distro-agnostic. Add Home Manager on top of it and you're good to go; both packages and dotfiles are dealt with.
Hm I see, thanks. A good one when you have it installed on every machine.
I haven't. But having my home dir be a git repo helps a great deal. The rest I install when I need it
chezmoi does basically that, without actually making your home dir a git repo, it just syncs it. It also supports templating and per-machine differences. Pretty cool really.
One thing I like to have with me is the AppImage version of programs when possible, since they usually work out of the box. Also helps ensuring I don't depend on the availability of whatever package manager the system uses.
Do they also embed the configuration inside of them? But for many dependencies and binaries I don't think that would be a good case scenario compared to package manager.
There are cases where AppImages aren't viable indeed, like with programs that require ring 0 access. But limitations exist for all formats, so perhaps another good alternative is having multiple versions of a given program, like downloading the equivalent deb package through apt while also keeping the appimage version. It would bloat the storage for a potential automated configuration, but it should help with ensuring compatibility.
You can make a custom distro based on one of the Universal Blue or Fedora Atomic images.
https://github.com/ublue-os/image-template
You could also go to the bleeding edge, make a Containerfile, and use
bootc
andpodman
to build a bootable container.I recently installed Bazzite exclusively for gaming but I need to read more about Atomic distro.
Most of my files are different across machines because of different themes etc. The only dotfiles I have synced across machines are my
.zshrc
,.gitconfig
,.ideavimrc
(not my actual vimrc because it has some machine-specific theming), and.p10k.zsh
. I have them all in a folder synced with syncthing and then I symlink~/.zshrc
to e.g.~/dotfiles/.zshrc
.I use SaltStack to automate my servers. Just feels better than Ansible to me.
For my PC and laptop I don't do anything, I haven't hopped distribution since I started using Tumbleweed a few years ago.I heard about Salt being better alternative than Ansible. Why? I see.
The clear cut of state data, pillar data and formulae feels more intuitive to me than Ansible's playbook organization.
For person using only Ansible I don't know what are you talking about. 😆
ansible claims to be lots of things it's not. It's supposed to be idempotent. It's not, you can execute arbitrary scripts. You don't need an agent on the machines.... but it might just decide to stop supporting your version of python one day. It's okayish for setting up some machines, but absolutely sucks for maintaining them.
I have a custom /etc/profile that loads
/etc/session.d/$HOSTNAME-$USER
scripts.I have a Linux setup script that downloads a bunch of config files and sets them up. I also have backups of my zshrc and other configs, and that helps a ton too. I have a Linux scripts repo on GitHub where I toss all my Linux scripts and that's quite helpful too.
I’ll be frank - I never have, though I probably should. For me, if an application’s configuration ever annoys me enough, I just manually copy the config from a machine that I already did the config.
One day, I may set up a shell script based on Debian’s Debootstrap that feeds it a list of packages (I think you can provide it a text file with a list of packages) to get everything set up, but that day is not today.