# dotfiles
I'm documenting this primarily for personal use. This repository contains shell
configs, vim configs, emacs configs, a list of commonly used applications, and
other items.
Configuration is everything.
# Setting up new computer
1. Install Dropbox
```bash
$ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
$ crontab -e # add the following line...
@reboot ~/.dropbox-dist/dropboxd 2>&1 >/tmp/dropbox.log
$ reboot # 1/3 verify installation
$ pgrep dropbox # 2/3 verify installation
$ dropbox.py status # 3/3 verify installation
```
1. Authorize computer to access dotfiles
```bash
$ ssh-keygen -t rsa -b 4096 -C 'wpcarro@gmail.com'
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa
$ xclip -sel clip <~/.ssh/id_rsa.pub
$ browse github.com # paste ssh public key in settings
$ mkdir ~/programming
$ git clone git@github.com:wpcarro/dotfiles ~/Dropbox/dotfiles
```
1. Install Antigen, Vundle, nix-env for package management
```bash
$ # antigen
$ curl -L git.io/antigen >~/antigen.zsh
$ # vundle
$ g clone VundleVim/Vundle.vim ~/.config/nvim/bundle/Vundle.vim
$ # nix-env
$ curl https://nixos.org/nix/install | sh
$ for p in $(cat nix-env.txt); do
> nix-env -i "$p"
> done
```
1. Install i3
```bash
$ sudo apt-get install i3
```
1. Install dotfiles
TODO: include steps 2-4 in the `make install` command.
```bash
$ cd ~/Dropbox/dotfiles
$ DOTFILES="$(pwd)" make install
```
# TODOS
- support dependencies like terminal themes
# SSHFS
TODO: add explanation about `unison`, `rsync`, etc.
SSHFS enables seamless file transfers from your local machine to a remote
machine.
## Usage
Assuming your remote machine is configured in your `~/.ssh/config` (see above),
you can mount your remote machine's home directory on your local machine like
so:
```bash
$ mkdir ~/ec2
$ sshfs ec2:/home/ubuntu ~/ec2 -o reconnect,follow_symlinks
```
Now your remote machine's home directory can be accessed using the `~/ec2`
directory. This directory can be treated as if it were an ordinary local
directory. To illustrate how easy it is to use, let's install `Vundle` onto our
remote machine.
```bash
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/ec2/.vim/bundle/Vundle.vim
```
Voila! We now have `Vundle` installed on our ec2 instance without needing to
manually SSH into that machine.
# GnuPG
Entering a new system?
```bash
$ ./configs/shared/gpg/.gnupg/import.sh path/to/directory
```
Leaving an old system? TODO: create a job that runs this periodically.
```bash
$ ./configs/shared/gpg/.gnupg/export.sh [directory]
```
## Reference
- sec: secret key
- pub: public key
- ssb: secret sub-key
- sub: public sub-key
## GnuPG + Git
1. Register newly created `[S]` signing subkey as `signingkey`
1. Enforce commit-signing
1. Opt into `gpg2` usage
```bash
$ git config --global user.signingkey <SIGNING_KEY>
$ git config --global commit.gpgsign true
$ git config --global gpg.program gpg2
```
## GnuPG + GPG-Agent
Setup `gpg-agent` to use password caching by adding the following entries to
`~/.gnupg/gpg-agent.conf` (already done in this repository):
```
default-cache-ttl 300 max-cache-ttl 3600
```
## True Color and Italics
At the time of this writing, Suckless's `st` terminal provides True Color and
italics support. It's also important to test that this support remains when
inside of Vim or inside of a Tmux session or both.
### TrueColor
To test for your terminal's True Color support, run:
```bash
$ test_true_color
```
Enable TrueColor in your `init.vim` (already done in this repository):
```viml
set termguicolors
```
### Italics
To test if your terminal supports italics and other text treatments, run:
```bash
$ test_text_formatting
```
### Ligatures
At the time of this writing, Suckless's `st` does not appear to support
ligatures.
## Miscellaneous notes
* Install executables or scripts to `~/bin`
* should be fine as long as they are shared between computers with i386 architectures
* Map `<CAPS_LOCK>` key to `<ESC>`
* Increase key-repeat rate
* Decrease key-repeat-delay
* Increase mouse speed