about summary refs log blame commit diff
path: root/README.md
blob: 8e9e4c795ad4b620b8382c8d3bbd50be0ade249f (plain) (tree)
1
2
3
4
5
6
7
8
9
          
 
                                                                               

                                                                              
 
                            

 

                         










                                                                                  


                                        


                                                  


                                                      
                                                              

   
                                                          




                                       
                                                               






                                         
             




                         
                   



                                                      
                       





                                
                                           

 
       
 

                                                   

                                                                         
 
        
 


                                                                               





                                                           
                                                                          


                                                                               




                                                                                    

                                                                            

 

       
                      
 


                                                         
 
                                                                      
 

                                                   
   






                         



                                                                

                           








                                                   
                                                                            
                                                            
 

                                        

   
 
                         
 


                                                                             


             
                                                    

       
                 

   
                                                                      




                 
           
 
                                                                         

       
                      

   
             
 

                                                                       
 
 
                      

                                                                                       


                                  
                      
# 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