Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ambrevar/dotfiles

[MOVED TO GITLAB]
https://github.com/ambrevar/dotfiles

dotfiles emacs eshell evil exwm guix guixsd helm keymap mu4e shell-scripts

Last synced: 23 days ago
JSON representation

[MOVED TO GITLAB]

Awesome Lists containing this project

README

        

# .dotfiles

## Overview

I use of Emacs for almost everything, including my window manager (EXWM). See
my [Emacs pro-tips](http://ambrevar.bitbucket.io/emacs/).

As such, the more-or-less advanced configurations of my former favourite Unix
programs are gone (Awesome, cmus, fish, fzf, Mutt, newsbeuter, ranger, urxvt,
zathura, zsh). You can search for them before the git commit `README: The Big
Emacs Shift`.

## Setup

For the list of programs I currently use, see the `.pkglists/` folder.

The `homeinit` script fully bootstraps a user profile with required files,
folders, symlinks applications.

The `homeclean` script removes trash files, caches and warns if critically
private data is found (e.g. PGP keys).

The `homesync` script updates the package lists, prints the status of all known
projects and optionally pushes the unmerged changes upstream.

As for managing a dotfiles repository, there are various approaches.

### Direct versioning

Git makes it possible to use your home folder as a git repo, thus versioning
all files directly.

cd
git init
git remote add origin
git fetch
git checkout master

### GNU Stow

[GNU Stow](https://www.gnu.org/software/stow/) lets you symlink a project's
files to an arbitrary folder.

The simplest setup would be to clone the dotfiles to, say, `~/dotfiles` then run

cd ~/dotfiles
stow .

This has several advantages over direct versioning:

- Subfolders in home are not subject to being included into the dotfiles git
repository. This is especially relevant for projects under a version control
system other than git.

- No need for a `.gitignore`.

- Simplified file control (add/remove/etc.).

- You can fine-tune which program configuration to synchronize on a per-system basis.

- You can manage several configurations for the same programs.