2018-04-23 21:20:26 +02:00
|
|
|
# dotfiles
|
2017-01-18 00:00:05 +01:00
|
|
|
|
2018-04-23 23:24:01 +02:00
|
|
|
I'm documenting this primarily for personal use. This repository contains shell
|
2018-04-23 20:55:33 +02:00
|
|
|
configs, vim configs, emacs configs, a list of commonly used applications, and
|
|
|
|
other items.
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2018-04-23 21:20:26 +02:00
|
|
|
Configuration is everything.
|
2017-07-30 04:27:36 +02:00
|
|
|
|
|
|
|
|
2019-03-07 15:06:02 +01:00
|
|
|
# Setting up new computer
|
|
|
|
|
|
|
|
1. Authorize computer to access dotfiles
|
|
|
|
|
|
|
|
```bash
|
2019-03-07 17:45:30 +01:00
|
|
|
$ ssh-keygen -t rsa -b 4096 -C 'wpcarro@gmail.com'
|
|
|
|
$ eval $(ssh-agent -s)
|
|
|
|
$ ssh-add ~/.ssh/id_rsa
|
2019-03-07 15:06:02 +01:00
|
|
|
$ xclip -sel clip <~/.ssh/id_rsa.pub
|
|
|
|
$ browse github.com # paste ssh public key in settings
|
|
|
|
$ mkdir ~/programming
|
2019-03-07 17:45:30 +01:00
|
|
|
$ git clone git@github.com:wpcarro/dotfiles ~/programming/dotfiles
|
2019-03-07 15:06:02 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
2. Install Antigen, Vundle, nix-env for package management
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ # antigen
|
|
|
|
$ curl -L git.io/antigen >~/antigen.zsh
|
|
|
|
$ # vundle
|
2019-03-07 17:45:30 +01:00
|
|
|
$ g clone VundleVim/Vundle.vim ~/.config/nvim/bundle/Vundle.vim
|
2019-03-07 15:06:02 +01:00
|
|
|
$ # nix-env
|
|
|
|
$ curl https://nixos.org/nix/install | sh
|
|
|
|
$ for p in $(cat nix-env.txt); do
|
|
|
|
> nix-env -i "$p"
|
|
|
|
> done
|
|
|
|
```
|
|
|
|
|
|
|
|
3. Install i3
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ sudo apt-get install i3
|
|
|
|
```
|
|
|
|
|
|
|
|
4. Install dotfiles
|
|
|
|
|
|
|
|
TODO: include steps 2-4 in the `make install` command.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ cd ~/programming/dotfiles
|
|
|
|
$ DOTFILES="$(pwd)" make install
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
# TODOS
|
|
|
|
|
|
|
|
- support dependencies like fonts, terminal themes
|
|
|
|
|
|
|
|
|
2019-02-27 18:18:54 +01:00
|
|
|
# SSHFS
|
2017-07-30 18:13:42 +02:00
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
TODO: add explanation about `unison`, `rsync`, etc.
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
SSHFS enables seamless file transfers from your local machine to a remote
|
|
|
|
machine.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
## Usage
|
2017-07-30 18:13:42 +02:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
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:
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ mkdir ~/ec2
|
|
|
|
$ sshfs ec2:/home/ubuntu ~/ec2 -o reconnect,follow_symlinks
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Now your remote machine's home directory can be accessed using the `~/ec2`
|
2019-03-11 19:00:03 +01:00
|
|
|
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.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/ec2/.vim/bundle/Vundle.vim
|
|
|
|
```
|
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
Voila! We now have `Vundle` installed on our ec2 instance without needing to
|
|
|
|
manually SSH into that machine.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
# GnuPG
|
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
Entering a new system?
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
```bash
|
|
|
|
$ ./configs/shared/gpg/.gnupg/import.sh path/to/directory
|
|
|
|
```
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
Leaving an old system? TODO: create a job that runs this periodically.
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2019-03-11 19:00:03 +01:00
|
|
|
```bash
|
|
|
|
$ ./configs/shared/gpg/.gnupg/export.sh [directory]
|
2018-04-23 23:24:01 +02:00
|
|
|
```
|
2019-03-11 19:00:03 +01:00
|
|
|
|
|
|
|
## Reference
|
|
|
|
|
|
|
|
- sec: secret key
|
|
|
|
- pub: public key
|
|
|
|
- ssb: secret sub-key
|
|
|
|
- sub: public sub-key
|
2017-06-20 13:46:58 +02:00
|
|
|
|
|
|
|
## GnuPG + Git
|
|
|
|
|
|
|
|
1. Register newly created `[S]` signing subkey as `signingkey`
|
|
|
|
2. Enforce commit-signing
|
|
|
|
3. 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
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Setup `gpg-agent` to use password caching by adding the following entries to
|
|
|
|
`~/.gnupg/gpg-agent.conf`:
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2018-04-23 23:24:01 +02:00
|
|
|
```
|
|
|
|
default-cache-ttl 300 max-cache-ttl 3600
|
2017-06-20 13:46:58 +02:00
|
|
|
```
|
|
|
|
|
2016-05-24 17:37:51 +02:00
|
|
|
|
2016-12-16 19:26:10 +01:00
|
|
|
# Neovim
|
|
|
|
|
|
|
|
The following snippet fixes the `<C-h>` issue in neovim on macOS.
|
|
|
|
|
|
|
|
```
|
|
|
|
$ infocmp $TERM | sed 's/kbs=^[hH]/kbs=\\177/' > $TERM.ti
|
|
|
|
$ tic $TERM.ti
|
|
|
|
```
|
|
|
|
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2017-01-04 06:02:53 +01:00
|
|
|
## True Color and Italics in tmux and vim
|
|
|
|
|
|
|
|
### TrueColor
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Note: make sure that the terminal you are using supports TrueColor (hint: recent
|
|
|
|
version of iTerm2 do). Also make sure that the tmux version you are using
|
|
|
|
supports TrueColor (hint: versions north of 2.2 should).
|
2017-01-04 06:02:53 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
At each step of the way, test TrueColor using the following shell pipeline
|
|
|
|
(hint: the gradients should be smooth):
|
2017-01-04 06:10:33 +01:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ curl https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh | bash
|
|
|
|
```
|
|
|
|
|
2017-01-04 06:02:53 +01:00
|
|
|
* Terminal: recent versions of iTerm 2 should support TrueColor
|
|
|
|
* Tmux: versions 2.2 and after should support TrueColor
|
|
|
|
* NeoVim: recent versions of NeoVim should support TrueColor
|
|
|
|
|
|
|
|
Enable TrueColor in your `~/.vimrc` (already done in this repository):
|
|
|
|
|
|
|
|
```viml
|
|
|
|
set termguicolors
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Enable TrueColor in your `~/.tmux.conf` (already done in this repository):
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Note: This may conflict with the setting for italics. Need to verify to confirm
|
|
|
|
/ disconfirm this (pending).
|
2017-01-04 06:02:53 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
set -ga terminal-overrides ",xterm-256color-italic:Tc"
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Italics
|
2016-12-17 22:20:27 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
In the file `/configs/shared/.tmux.conf` there is a line to add italics support
|
|
|
|
to tmux:
|
2016-12-17 22:20:27 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
set -g default-terminal "tmux-256color-italic"
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
The `$TERM` entry, `tmux-256color-italic`, will be unavailable until you add the
|
|
|
|
file, `tmux-256color-italic`, to your terminal database. You can do this with
|
|
|
|
the following command:
|
2016-12-17 22:20:27 +01:00
|
|
|
|
|
|
|
```bash
|
2018-04-23 21:20:26 +02:00
|
|
|
$ tic ~/dotfiles/tmux-256color-italic
|
2016-12-17 22:20:27 +01:00
|
|
|
```
|
|
|
|
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2017-09-15 17:50:14 +02:00
|
|
|
### Powerline
|
|
|
|
|
|
|
|
Install Powerline...
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ pip install powerline-status
|
|
|
|
```
|
|
|
|
|
|
|
|
Install the Powerline fonts...
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ hub clone 'powerline/fonts'
|
|
|
|
$ cd fonts && ./install.sh && cd ../ && rm -rf fonts
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Lastly, ensure that the line in `.tmux.conf` that sources the `powerline.conf`
|
|
|
|
is uncommented:
|
2017-09-15 17:50:14 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
run-shell "powerline-daemon -q"
|
|
|
|
source "/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf"
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Commonly used applications (Mac)
|
2018-04-23 20:55:33 +02:00
|
|
|
|
|
|
|
Thankfully `brew cask` simplifies the installation of many of my commonly used
|
|
|
|
applications:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ brew cask install alfred dash slack 1password slack emacs dropbox iterm2 flux docker
|
|
|
|
```
|
|
|
|
|
|
|
|
The following applications need to be downloaded / installed manually:
|
|
|
|
|
|
|
|
* oh-my-zsh: a full suite of z-shell extensions
|
|
|
|
* homebrew: CLI for procuring third-party applications
|
|
|
|
* slate.js: resize and move your windows with keyboard shortcuts
|
2018-04-23 23:24:01 +02:00
|
|
|
* google chrome: web browser
|
2016-05-24 18:23:48 +02:00
|
|
|
|
2016-05-25 17:36:01 +02:00
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Commonly used fonts
|
|
|
|
* Install [Hasklig](https://github.com/i-tu/Hasklig) for ligature support in Elm, Elixir, etc
|
|
|
|
* Install [Operator Mono](http://www.typography.com/blog/introducing-operator) for expressive monospaced font
|
|
|
|
* Install powerline fonts
|
2018-04-23 20:55:33 +02:00
|
|
|
* Install Adobe Source Code Pro font for shell and text editors
|
2016-05-27 16:04:20 +02:00
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
### Ligature Support
|
2016-05-27 16:04:20 +02:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
To support ligatures make sure Hasklig is installed (link at the bottom). Ensure
|
|
|
|
that you are using an terminal emulator that supports ligatures. With both of
|
|
|
|
these tasks completed, ligatures should function in Neovim.
|
2016-06-23 17:15:29 +02:00
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Miscellaneous notes
|
|
|
|
* Map `<CAPS_LOCK>` key to `<ESC>`
|
|
|
|
* Increase key-repeat rate
|
|
|
|
* Decrease key-repeat-delay
|
2018-04-23 20:55:33 +02:00
|
|
|
* Increase mouse speed
|