The "." (dot) files where the configuration for your shell, editors, apps, and other system tools live.
Github has an unofficial guide to dotfiles dotfiles.github.io where you can see what other people are using.
I'm just in the midst of rebooting my dotfiles and switching to chezmoi as the tool for managing them.
Table of Contents
- awesome-dotfiles https://github.com/webpro/awesome-dotfiles
What I tried
- gnu stow?
- fresh to build gh config? https://github.com/freshshell/fresh
- homesick? https://github.com/technicalpickles/homesick
- mackup? https://github.com/lra/mackup
- vcsh http://blog.tfnico.com/2014/03/managing-dot-files-with-vcsh-and-myrepos.html
- dotdrop https://github.com/deadc0de6/dotdrop
- dotgit https://github.com/kobus-v-schoor/dotgit
- https://github.com/evanpurkhiser/dots has post installation script
- using git repository with symlinks + external ~ working directory git
- something about files which can't be kept in git git
[2018-06-20]configs which are not symlinking – have a script which checks them against reference every few hours and complains if config doesn't match the reference?
- related infra
[2019-06-01]motivation for core.worktree git setup dotfiles
[2020-07-12]Manage your dotfiles with Git - openSUSE News git
[2020-05-26]Dotfiles - Joe Yates' Blog git dotfiles
TODO check occasionally?
What I tried
apparently a parallel hierarchy with symlinks?
would be nice to specify, which directories should be created and which should just be symlinked. Otherwise stuff might end up in symlinked folders
- very clumsy to use, hard to replace existing entries, no apparent way of deleting them (unlike git)
fresh to build gh config? https://github.com/freshshell/fresh
you can write a configuration, and it will symlinka all automatically
apparently can source from gh repos, so you could just 'follow' someones' dotfiles (not very portable though)
looks like a parallel hierarchy of dotfiles mimicing /home? could be convenient to manage with symlinks…
wonder if .homesick directory is configurable
ok, so if i create home dir and add relative symlinks to it, it sort of works fine.
add a script to check symlink integrity?
still unclear what should i do with patch files. maybe have a manual dir with symlinks as well?
homesick track? although it's a bit weird if configuration comes from different files, but i guess it's quite rare
ugh.. homedirsubdir is a bit weird.. could make it support relative symlinks within repo
ugh.. homesick seems to rewrite relative symlinks to absolute… wtf???
apparently just backs up and symlinks configs for some applications
hmm, so it supports doublecmd. wonder how they handle their configs..
nope, just copies. nothing interesting
[2021-05-04]doesn't support mc
weird stuff, messes with git and uses mr tool to manipulate on multiple repos at the same time
take another look at it?
mm – ok, so apparently it's just like single repo view but routing to different subrepos
e.g. vcsh init vim; vcsh vim commit .vimrc
yaml configs.. ugh
allows templating thanks to jinja2
erm.. it copies, not symlinks apparently
aims to keep all in single repository
https://github.com/evanpurkhiser/dots has post installation script
was updated 2 years ago
using git repository with symlinks + external ~ working directory git
cons: not dropbox friendly because of symlinks
maybe sync via syncthing?
- TODO how to make todos here?
keep only symlinks to files unless it absolutely makes sense to symlink directory
why: if it's a directory locally and a symlink in the repo (e.g. with autostart dir), it won't merge easily
symlink into from various repos
- public dotfiles
- private dotfiles
- machine specific dotfiles
- files which aren't under git (configs-nogit)
config-nogit: use tree command to store contents
maybe git lfs would be better for that??
- histories: bash, python, etc.
- alias cgit='git –git-dir=/repos/configuration/.git –work-tree=/home/karlicos'
- cgit ireset – to restore working dir state
- run check.sh from ~ and restore all the missing symlinks
resolve filtype configs (file vs symlinks)
cgit status to see if anything has changed
cgit add / cgit commit / cgit push
try git lfs?
something about files which can't be kept in git git
for configs which are patched via script, symlink what patches it setup
ln -s "$(realpath $BASH_SOURCE" "$CDIR"
jq for patching JSON json
https://jqplay.org/ is also quite convenient
[2018-06-20] configs which are not symlinking – have a script which checks them against reference every few hours and complains if config doesn't match the reference?
I guess it would belong to configuration repository
can't use bare repository since they don't have index
we don't want to use working directory since it's just confusing
solution is git config core.worktree $HOME
[2020-07-12] Manage your dotfiles with Git - openSUSE News git
[2020-05-26] Dotfiles - Joe Yates' Blog git dotfiles
very similal to how I manage it – the git based approach is super simple, portable and predictable