2018-08-04 20:27:54 +02:00
#+TITLE : .dotfiles
2012-06-18 12:04:02 +02:00
2018-08-04 20:27:54 +02:00
* Overview
2013-01-12 10:18:41 +01:00
2018-12-02 20:36:47 +01:00
I use of Emacs for almost everything, including my window manager ([[https://github.com/ch11ng/exwm ][EXWM ]]), except
for the [[https://next.atlas.engineer ][Next ]] web browser. See my [[https://ambrevar.xyz/emacs/ ][Emacs pro-tips ]].
2012-06-21 17:34:18 +02:00
2017-07-28 12:58:12 +02:00
As such, the more-or-less advanced configurations of my former favourite Unix
programs are gone (Awesome, cmus, fish, fzf, Mutt, newsbeuter, ranger, urxvt,
2018-08-04 20:27:54 +02:00
zathura, zsh). You can search for them before the git commit =README: The Big
Emacs Shift=.
2012-06-18 12:04:02 +02:00
2019-03-20 12:15:37 +01:00
* E-mail setup
Emails can be particularly tricky to set up, so I think they deserve a dedicated
section. My configuration files:
- [[file:.mbsyncrc ][.mbsyncrc ]] for =mbsync= from the ~isync~ project to synchronize mail mailboxes
over IMAP.
- [[file:.notmuch-config ][.notmuch-config ]] for the email indexer.
2019-03-20 12:17:33 +01:00
- My Emacs' [[file:.emacs.d/lisp/init-notmuch.el ][init-notmuch.el ]] for the user interface with the [[https://github.com/emacs-helm/helm-notmuch ][helm-notmuch ]] extension for
2019-03-20 12:15:37 +01:00
searches with live updates. (A must!)
- My Emacs' [[file:.emacs.d/lisp/init-message.el ][init-message.el ]] to send emails. I can afford to not rely on a
dedicated SMTP client (e.g. =msmtp= ) since all my email accounts use the same
SMTP server.
- My Emacs' [[file:.emacs.d/lisp/init-notmuch-sync.el ][init-notmuch-sync.el ]] and my [[file:.local/bin/homesync ][homesync ]] script to synchronize the user
tags (but not the automatic ones) under version control.
2018-08-04 20:27:54 +02:00
* Setup
2014-03-22 12:16:20 +01:00
2018-08-04 20:27:54 +02:00
For the list of programs I currently use, see the =.package-lists/= folder.
2013-05-31 19:01:32 +02:00
2018-08-04 20:27:54 +02:00
The =homeinit= script fully bootstraps a user profile with required files,
2018-12-03 23:03:35 +01:00
folders, symlinks and applications.
2013-05-31 19:01:32 +02:00
2018-12-03 23:03:35 +01:00
The =homeclean= script removes trash files, cache and warns if critically
2018-05-24 15:34:29 +02:00
private data is found (e.g. PGP keys).
2012-08-01 15:45:33 +02:00
2018-08-04 20:27:54 +02:00
The =homesync= script updates the package lists, prints the status of all known
2018-05-24 15:34:29 +02:00
projects and optionally pushes the unmerged changes upstream.
2018-03-09 11:25:02 +01:00
2018-05-24 15:34:29 +02:00
As for managing a dotfiles repository, there are various approaches.
2018-03-09 11:25:02 +01:00
2018-08-04 20:27:54 +02:00
** Direct versioning
2018-03-09 11:25:02 +01:00
2018-08-04 20:27:54 +02:00
Git makes it possible to use your home folder as a git repository, thus
versioning all files directly.
2013-05-31 19:01:32 +02:00
2018-08-04 20:27:54 +02:00
#+BEGIN_SRC sh
$ cd
$ git init
$ git remote add origin <repo >
$ git fetch
$ git checkout master
#+END_SRC
2013-05-31 19:01:32 +02:00
2018-08-04 20:27:54 +02:00
** GNU Stow
2013-05-31 19:01:32 +02:00
2018-08-04 20:27:54 +02:00
[[https://www.gnu.org/software/stow/ ][GNU Stow ]] lets you symlink a project's files to an arbitrary folder.
2018-03-09 11:25:02 +01:00
2018-08-04 20:27:54 +02:00
The simplest setup would be to clone the dotfiles to, say, =~/dotfiles= then run
2018-03-09 11:25:02 +01:00
2018-08-04 20:27:54 +02:00
#+BEGIN_SRC sh
$ cd ~/dotfiles
$ stow .
#+END_SRC
2018-03-09 11:25:02 +01:00
2019-03-20 12:15:22 +01:00
Or, from a different location:
#+begin_src sh
$ cd /path/to/dotfiles
$ stow -t ~ .
#+end_src
2018-03-09 11:25:02 +01:00
This has several advantages over direct versioning:
- Subfolders in home are not subject to being included into the dotfiles git
2018-08-04 20:27:54 +02:00
repository. This is especially relevant for projects under a version control
system other than git.
2018-03-09 11:25:02 +01:00
2018-08-04 20:27:54 +02:00
- No need for a =.gitignore= .
2018-03-09 11:25:02 +01:00
- Simplified file control (add/remove/etc.).
2018-08-04 20:27:54 +02:00
- You can fine-tune which program configuration to synchronize on a per-system
basis.
2018-03-09 11:25:02 +01:00
- You can manage several configurations for the same programs.
2018-12-03 23:03:35 +01:00
* License
Unless stated otherwise, all files are under the GPL3 license.
See COPYING for the full license.