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