Hello, i would like to know how you manage your dotfiles.
Do you use some gui or tui?
There are many ways i don’t what to do.
Probably im going to do git repo with lazygit. I like tuis. I am managing files on two artix linux systems 1- pc and 2- laptop
Gnu stow and a git repository.
stow creates bulk symlinks according to the folder structure.
chezmoi does everything I need. It’s really nice; would recommend.
I used to have everything in a git repo, but nowadays I use Nix with Home Manager, and I don’t want to look back.
How many dot files are you changing to need some sort of manager?
For me it’s more about keeping multiple systems in sync and working as intended. E.g. I have my laptop, a home server with couple different distros and a few cloud VMs. Whenever I change a keybind in neovim or tmux or whatever, I just save the changes in a slightly different way and now every machine has those changes so I don’t need to update each machine manually.
ln exists.
Don’t need to I use nix
This is how I handle my nix configs though
Love it!!
I’m using stow, and then git for versioning. The only question I’m currently facing is whether to keep my stow packages as individual got repos (so I can switch branches for radically different configs or new setups) or treat the whole lot as a big repo, and set the others up as subtrees.
I use Syncthing with a folder called “Configuration Files” where I drop all my sync-able configs and dotfiles and I simply symlink them as needed.
So there’s at least the two of us doing it this way. Syncthing is an absolutely fantastic tool.
Yeah, it’s fantastic. It’s more effective at this than I thought because even though I use git a lot for programming and projects, I’ve admittedly forgotten far too often to commit and push/pull trivial changes on devices and in most cases, all I need is just for dotfiles to sync across devices anyway.
I am syncing a whole lot more than just dotfiles and have done so for years. Admittedly, I am running an always-on-instance (multiple, in fact…). Syncthing hasn’t put a foot wrong in over a decade.
I am donating a small amount to the project every month and would like to encourage others to do the same.
I use home-manager to manage most of my dotfiles and store them in a git repository. Additionally, I just symlink the configurations I’m too lazy to write as home-manager options (yet), which in turn is a decent way to make migrating to home-manager options less upfront.
I use a bare git repo. After the initial set-up its just the basic git commands but invoked with a
gitdfalias. I wrote a (non-monetized) blog post here about it.If still needing a tui you could write a simple helper script to call the commands.
I’m using VCSH, which allows me to split the home directory into multiple git repos without worrying about symlink consistency (like with GNU stow) or apps that have problems with symlinks.
The syntax is exactly the same as git, only that I do (for example)
vcsh emacs add -pinstead ofgit add -p.I keep them in a Fossil repository (with a few private log-in data stored in a SyncThing folder instead) and I just
lnthem where I need them.I just wrote a bash script copies the relevant files or directories I want to back up from either ~ or ~/.config and places them in a local git directory which I then push to a private repo on Codeberg. Super janky and manual but I update dotfiles so seldom that it works for what I need.
I do a git repo for my dot files with an installer that configures it based on whether I’m using Linux, macOS, or FreeBSD; a server or desktop; and whether I’m in bash or zsh. It also includes a bunch of functions and aliases that I find useful. It’s not always pretty because I also use it as a practical place to try new shell script bits when I have time. I’m hoping to change some things around soon thanks to some ideas from Dave Eddy’s bash course at ysap.sh.
i used to do this, but couldn’t figure out how to stay on top of the changes introduced by distro’s and updates to the apps; did you figure these out somehow?
I pretty much stick to straight bash and core utils, so it’s not much of a burden. Plus on the Linux side, I mostly stay with Debian and its derivatives, which limits some of the work.
But really I don’t consider every feature of my dot files to be a finished product. The core stuff is reliable, but if I catch a problem with anything more esoteric or if I see some functionality that looks interesting, it’s a brain teaser I get to tackle.
I pretty much stick to straight bash and core utils, so it’s not much of a burden…
this has worked fairly well for me too and i’ve applied this logic to a few desktop environment apps that are seemingly ubiquitous in all of the distros.
though, i still admire (and sometimes envy) the customizations that people make to their environments.
bash isn’t standard on most systems.
I keep most of them in a git repository that I check out at
~/.config. Some software doesn’t follow the XDG Base Directory Specification out of the box but can be configured to do so; the Arch Linux wiki has an article about it. For software that cannot be configured to follow the standard I have dedicated repositories, like for OpenSSH.I use YADM which is a thin wrapper around a bare git repo but still has some creature comforts like per-machine configs and templating.
Since you still need to interact with Git, I pair it with Lazygit. Love that software, I do everything Git with it now!
Unfortunately it is a little jank due to the way Lazygit handles bare repos, thankfully there’s a command that sets up the needed Git variables for it to work correctly:yadm enter lazygitI send the repo to my own Forgejo instance. Kinda overkill but I was already self-hosting other services so I thought “Fully private Git server just for me? Why not?”
Now, this is only for managing user level files. For managing system level configs I haven’t setup anything yet.
YADM has a solution for this but it seems a little jank, maybe I’ll learn Ansible instead, dunno.