πŸ“š node [[dotfiles]]

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

TODO check occasionally?

What I tried

gnu stow?

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)

homesick? https://github.com/technicalpickles/homesick

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???

mackup? https://github.com/lra/mackup

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

vcsh http://blog.tfnico.com/2014/03/managing-dot-files-with-vcsh-and-myrepos.html

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

dotbot?

yaml configs.. ugh

dotdrop https://github.com/deadc0de6/dotdrop

allows templating thanks to jinja2
erm.. it copies, not symlinks apparently

dotgit https://github.com/kobus-v-schoor/dotgit

hmm encryption!
aims to keep all in single repository
too comlicated.

https://github.com/evanpurkhiser/dots has post installation script

was updated 2 years ago

using git repository with symlinks + external ~ working directory [[git]]

/repos/configuration
cgit command

  • 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??
    • scripts
    • histories: bash, python, etc.
    • etc

bootstrapping

  • 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)

workflow

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"

Tooling

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

related [[infra]]

[2019-06-01] motivation for core.worktree [[git]] [[setup]] [[dotfiles]]

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

πŸ“– stoas
β₯± context