#+title: Dotfiles
#+author: Aryadev Chavali
#+description: README for Dotfiles

General configuration for my system, that system being composed of two
things:
- Emacs
- The bootstrap for Emacs

[[file:emacs-screenshot.png]]

* Setup
Assumptions:
- You're on Linux
- This repository is located at =~/Dotfiles=
- You have [[https://www.gnu.org/software/stow/][GNU/stow]]

#+begin_src sh
mkdir -p \
      ~/.local/src \
      ~/.local/bin \
      ~/.local/lib \
      ~/.local/share \
      ~/.config \
      ~/Downloads \
      ~/Code \
      ~/Media \
      ~/Projects \
      ~/Text;

cd ~/Dotfiles;
stow Emacs \
     tmux \
     vim \
     Shell \
     XServer \
     Scripts \
     SystemD \
     SXHkD \
     mpv \
     aspell \
     ClangFormat \
     Dunst \
     Zathura;
#+end_src

* Why use this
Please don't.  I don't maintain this for anyone but me so don't expect
this to work for you if you're not willing to roll your sleeves up.
On the other hand, I'd say there's some pretty good work here -
particularly in my Emacs configuration.  Some highlights are:

- A custom
  [[file:Emacs/.config/emacs/elisp/eshell-prompt.el][eshell prompt]]
  which provides git status information and a bit of dynamic colouring
  based on command exit status
- A complete [[file:Emacs/.config/emacs/elisp/literate.el][literate]]
  system which compiles my configuration
- A [[file:Emacs/.config/emacs/elisp/better-mode-line.el][better mode
  line]] which auto configures the default mode line to make it more
  aesthetically pleasing
- 55 line [[file:Emacs/.config/emacs/elisp/elfeed-org.el][package
  extension]] for elfeed which adds org mode support
* Emacs archives
99 Git repositories is a lot for Emacs to pull in order to setup my
configuration.  Would be nice if I could pull all of it down at once
for use instead of having to wait for _straight_ (my Emacs package
manager of choice) to do it synchronously.

These Emacs archives are an MVC (Minimum Viable Configuration)
including all the necessary Lisp which you can pull down and load
directly.  You should be able to find the latest archive
[[https://aryadevchavali.com/resources][here]].
** Scripts
*IMPORTANT*: These are heavy scripts, expect them to take a while.
Therefore, if in Emacs, do _not_ run these via ~C-c C-c~ because it
will block the main thread.

This script generates the archive:
#+begin_src sh
tar --use-compress-program="zstdmt -19 -T0" \
    -cvf emacs-config.tar.zst \
    ~/.config/emacs/config.org \
    ~/.config/emacs/early-init.el \
    ~/.config/emacs/init.el \
    ~/.config/emacs/elisp/ \
    ~/.config/emacs/.config/custom.el \
    ~/.config/emacs/straight/versions/default.el \
    ~/.config/emacs/straight/repos/
#+end_src

And this script sends it over via rsync
#+begin_src sh
rsync -avz --info=progress2 --info=name0 emacs-config.tar.zst \
      root@aryadevchavali.com:/var/www/html/resources
#+end_src

You can do the last bit if using Emacs: just open the directory where
you've compressed the configuration in ~dired~, open the remote
directory in another split, then =M-r= ~dired-rsync~ to copy it over.
You get a cute Little progress indicator in the mode line as well!
