dotgit
dotgit copied to clipboard
Links to dotfile directories that are git submodules
Conclusion
Some of my symbolic links in $HOME points to folders that are managed as git submodules inside my current dotfile repo. If I could manage this, I would like to switch my dofile handling to dotgit.
Thank you for this software!
Current state of my dotfiles
My dotfiles project contains a handcrafted install.sh script. Every time I add a new module I have to add functions here. Running my installer gives an output like:
`
dotfile installer
----------------------------------------------
Please enter which dotfile to install
vimrc (1) - installed
git (2) - installed
tmux (3) - installed
mutt (4) - installed
pam_mount (5) -
~/bin (6) - installed
bash (7) - installed
liquidprompt (8) - installed
weechat (9) - installed
ssh_config (a) - installed
mbsync_config (b) - installed
user-systemd-units (c) - installed
multimount (d) - installed
spacemacs (e) - installed
chemacs (f) - installed
doom (g) - installed
(Q)uit
----------------------------------------------
` The script checks if a module is installed in ~ and if not it provides mechanism to install it. It works but is always a lot of manual work. So I'm looking for something better and came across this project.
I want to share one of my use case and ask if/how you would map it to dotgit. For some modules I use git submodules inside my dotfiles repo. The structure in my dotfiles repo looks like:
(sub)folders
`dotfiles on master [⇡] ➜ tree -d -L 2 . ├── afew ├── bash ├── bin ├── chemacs │ └── chemacs ├── doom │ ├── doom.d │ └── emacs.d-doom ├── dotgit │ ├── docs │ ├── dotgit │ ├── old │ ├── pkg │ └── tests ├── git ├── liquidprompt │ └── liquidprompt ├── mbsync ├── msmtp ├── multimount ├── mutt │ └── mutt ├── notmuch │ └── hooks ├── pam ├── spacemacs │ └── emacs.d-spacemacs ├── ssh ├── systemd ├── tmux │ └── tmux ├── vim │ └── pack └── weechat ├── certs ├── logs ├── perl ├── python ├── ruby ├── script └── xfer
41 directories`
git submodules in dotfiles
dotfiles on master [⇡] ➜ git submodule 6b9810acfaeec077f26c9ec798059cd9e7106072 chemacs/chemacs (v1.0-5-g6b9810a) 39d6caf090549f1ec39f84b8704749ffb168e0be doom/emacs.d-doom (v2.0-12220-g39d6caf09) b5a31d72fe2dcc7f5417ece7495e08807e959664 dotgit (1.0.3-331-gb5a31d7) ec891eaada5cd427292055603c7dbe977d478e67 liquidprompt/liquidprompt (v1.12.1) c0f61fa035facc45e979d09c7c4efcfdf333d3fe spacemacs/emacs.d-spacemacs (v0.200.0-4257-gc0f61fa03) 1531b3770a7cf7373d15fedd239c5331b99342d1 tmux/tmux/plugins/tmux-continuum (v3.1.0-37-g1531b37) 77ca3aab2aed8ede3e2b941079b1c92dd221cf5f tmux/tmux/plugins/tmux-copycat (v3.0.0-15-g77ca3aa) 2db63de3b08fc64831d833240749133cecb67d92 tmux/tmux/plugins/tmux-pain-control (v1.0.0-19-g2db63de) 327c0481ad20c429b4e692e092659f8b3346b08f tmux/tmux/plugins/tmux-resurrect (v2.4.0-109-g327c048) 09ec86be38eae98ffc27bd0dde605ed10ae0dc89 tmux/tmux/plugins/tmux-sessionist (v2.3.0-25-g09ec86b) 648005db64d9bf3c4650eff694ecb6cf3e42b0c8 tmux/tmux/plugins/tmux-yank (v2.1.0-77-g648005d) 06d41226af02ca4f5bcf58169dd4f0a2aa42218c tmux/tmux/plugins/tpm (v3.0.0-47-g06d4122) 52496c05e28f69bd2a1659ccaf374dc739e86cb5 vim/pack/plugins/start/cscope-maps (heads/master) e653a682705234e9bffac0c32995f339e66df684 vim/pack/plugins/start/nerdtree (5.0.0-302-ge653a68) 1d7ec4e7cd7ee6b689baecd9002342cc55de6c20 vim/pack/plugins/start/papercolor-theme (v0.9-58-g1d7ec4e) 387bbadda98e1376ff3871aa461b1f0abd4ece70 vim/pack/plugins/start/tagbar (v2.7-58-g387bbad) c7fb175d3565159699885653767214a6aa583ea4 vim/pack/plugins/start/vim-airline (v0.9-148-gc7fb175) d2d2da11c58c09d314b23029bdd4a4ab747d76e2 vim/pack/plugins/start/vim-gitgutter (heads/master) 7da66c1b34dc2976a70c9393c7e0c9f47e129e89 vim/pack/plugins/start/vim-linux-coding-style (v0.4-3-g7da66c1)
Some examples of my ~
- .mbsyncrc -> projects/dotfiles/mbsync/mbsyncrc
- .msmtprc -> projects/dotfiles/msmtp/msmtprc
- .mutt -> projects/dotfiles/mutt/mutt
- .mutt_certificates -> projects/dotfiles/mutt/mutt_certificates
- .notmuch-config -> projects/dotfiles/notmuch/notmuch-config
- .spacemacs -> projects/dotfiles/spacemacs/spacemacs
- .tmux -> projects/dotfiles/tmux/tmux
- .tmux.conf -> projects/dotfiles/tmux/tmux.conf
- .tmuxline -> projects/dotfiles/tmux/tmuxline
- .vim -> projects/dotfiles/vim
- .vimrc -> projects/dotfiles/vim/vimrc
- .weechat -> projects/dotfiles/weechat