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

                                                                             
 






                                                                                
 
              
 








                            

































                                                                         
 










                                                                                  
                                      

       


                                                  

                                                      

   
                          

       

                                                             




                                 
                   
 















                                                        

       
                       


                                
                            
 
                                                                
 



                                                        
   
 
                                                 
 
       
 

                                                   

                                                                         
 
        
 


                                                                               





                                                           
                                                                          


                                                                               




                                                                                    

                                                                            

 

       
                                 
 
       
            
   
 
                                               
 
       
            
   






                         
 
 
                      
 
                                                               

       
                 
                
                      

              

   
             
 
                                                                                              
# dotfiles

This is my mono-repo. Having a personal mono-repo is a new idea for me, so at
the time of this writing, the state of this repository is fledgling.

I'm attempting to amass a collection of functions across a variety of languages
while minimizing the costs of sharing the code across a projects. Stay tuned for
more updates as my definition of the mono-repo becomes more clear, my opinions
evolve, and my preferences change.

My configuration also lives inside of my mono-repo. Things like Emacs, Tmux,
SSH, and other tools are configured herein.

# Installation

## wpgtk and gvcci

```bash
$ apti python-pip3
$ gclone deviantfero/wpgtk
$ cd ..
$ gclone FabriceCastel/gvcci
```

- TODO: Integrate Emacs themes into wpgtk.
- TODO: Integrate Vim themes into wpgtk.
- TODO: add these to the install script

```bash
$ ln -s ~/Dropbox/.password-store ~/.password-store
$ ln -s ~/Dropbox/bin ~/bin
$ import_gpg $DOTFILES/configs/shared/gpg/.gnupg/exported
```

1. Clipmenu

Clipmenu is a service to store a history of copied strings.

Install it as:
```bash
$ cd ~/programming && g clone cdown/clipmenu
```

- TODO: Include `~/.config/systemd/user` in `configs/shared`.
- TODO: Obviate installation.

Ensure that it runs on startup:
```bash
$ cd ~/programming/clipmenu
$ cp clipmenu clipmenud clipdel ~/bin # You may not need to do this step.
$ vim init/clipmenud.service
# Change the ExecStart line to point to ~/bin/clipmenud
$ cp init/clipmenud.service ~/.config/systemd/user/clipmenud.service
$ systemctl --user start clipmenud
$ systemctl --user enable clipmenud # This step may be optional.
$ reboot
$ systemctl --user status clipmenud # Verify installation worked.
```

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 GitHub

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

1. Install Vundle, nix-env

```bash
$ ln -s ~/Dropbox/Vundle.vim ~/.config/nvim/bundle/Vundle.vim
$ cat ~/Dropbox/install_nix.sh | sh
$ for p in $(cat nix-env.txt); do
>   nix-env -i "$p"
> done
```

1. Install dotfiles

- TODO: include steps 2-4 in the `make install` command.

Missing the following dependencies:

- `stow`
- `neovim`
- `bat`
- `exa`
- `fasd`
- `opam`
- `ghcup`
- `ripgrep`
- `fzf`
- `fd`
- `hub`
- `pass`

```bash
$ cd ~/Dropbox/dotfiles
$ DOTFILES="$(pwd)" make install
```

1. Install Node dependencies

For now, this deserves its own section since it isn't automated.

```bash
$ gclone tj/n       # clone repo
$ sudo make install # build from source
$ n stable          # install the stable version of node
```

- TODO: 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

To install GPG run the following:

```bash
$ import_gpg
```

TODO: create a job that runs this periodically.

```bash
$ export_gpg
```

## Reference

    - sec: secret key
    - pub: public key
    - ssb: secret sub-key
    - sub: public sub-key


## Terminals and Fonts

Any terminal or font I choose should pass the following checks:

```bash
$ test_true_color
$ test_16_colors
$ test_text_formatting
$ test_unicode
$ test_emojis
```

### Ligatures

If using a font with ligature (e.g. Hasklig) assert that your terminal also support ligatures.