Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Chezmoi is what you want.

I haven't looked at this one yet, but until someone compares it to Chezmoi and points out where it's better I'm not even looking attention I fear. Chezmoi is just that good.





For the sake of answering the parent question with regard to Chezmoi specifically: Chezmoi is a very comprehensive dotfiles manager. It can do a lot of things. More than any other I'm aware of.

More does not necessarily equal better, though. I think that's a matter of personal preference. I tried Chezmoi for a while and ultimately decided it was just a lot more levers at my disposal than I really wanted to even think about.

Dotter, by contrast, is a lot more minimal. Dotter is little more than a symlink manager plus templating engine plus config files to declare what machines need what config.

Chezmoi is all that, and does a lot more: encryption/decryption (even has password manager integrations), automatic push/pull. It's also designed so that you can add or manage files regardless of what your current working directory is (via commands like `chezmoi edit/add`).

In my case, after deciding I wanted to go for the minimal end of things, I almost went for GNU Stow however, I wanted templating functionality and I liked dotter's "packages" system for defining what files a given computer needs.

And very much a personal bias here: I found the learning curve of Chezmoi templates not great. I'm also not a big fan of the fact that Chezmoi relies on you naming your source files in particular ways in order to determine what the target file permissions should be.


> naming your source files in particular ways in order to determine what the target file permissions

How does dotter handle permissions?

> does a lot more: encryption/decryption (even has password manager integrations), automatic push/pull.

But you don't have to learn about it / use it?


Wait until you get a load of nix's home manager!

How do you manage system wide settings? I've been using ansible, but it seems a bit overkill. I feel it's over complicating things.

I have a multi-tier system.

Chezmoi manages stuff that's in my /home - configurations, scripts in ~/bin/ etc. It also installs a bunch of applications with a runonce_ -script both on Linux and MacOS.

Ansible makes sure the correct system-level packages are installed, things in /etc/ are set up the way I like etc. There's a bunch of overlap with the packages installed by ansible and Chezmoi - but I run `chezmoi update` multiple times a week an I can run it on any computer I'm on. Ansible is for Big Things.

Then I have an opentofu setup that manages a bunch of docker containers, keeping them as stateful as possible.

For daily simple things, I can just edit any config file, add it to chezmoi and push it to git. Then on any machine I can `chezmoi update` and everything is synced.


I use my dotfiles repo for this.

For example in my dotfiles repo I'll have `etc/pacman.d/01-options.conf` and the dotfiles install script will symlink that to `/etc/pacman.d/01-options.conf`. This way the source of truth is always in a single dotfiles repo.

This strategy has worked well for dotfiles I use on Arch, Debian, Ubuntu and macOS. It includes support for WSL 2 too. The install script has been working with this set up for years to run 1 single command and have everything work where work in this case is installing and configuring a bunch of tools I use. An example is here https://github.com/nickjj/dotfiles.


Not GP.

I tarball /etc. On a new system, I restore config quite carefully.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: